很多測試朋友一直在詬病 unittest,說 unittest 相對 pytest 來說太雞肋了,pytest 中提供了很多高級功能 unittest 中都沒有。
在這里還是想為 unittest 打抱不平一下,unittest 是由 python 官方維護的官方庫,官方庫都是比較輕量級的,本身只實現核心的一些功能,肯定不會像 pytest 這些第三庫一樣根據需求,去開發一些定制的功能。
其實 unittest 也有自己的優勢,學習成本低,使用起來簡單也易上手。目前還是有很多測試的小伙伴在使用的,於是前段時間在網上看了下,有大牛在 unittest 的基礎上擴展開發第三方庫 unittestreport,為 unittest 開發一些常用的擴展功能,來彌補 unittest 的不足。
目前實現的功能有:多種風格 HTML 測試報告生成、多線程運行、用例失敗重跑、數據驅動、命令行啟動執行測試等功能
unittestreport 的安裝:
pip install unittestreport
前段時間實現了第一個版本,unittest 生成 HTML 測試報告,以及 unittest 用例多線程運行機制,最近看到又優化了 unittestreport 的一個版本(1.0.9 版本),實現了 unittest 用例失敗重運行的機制,那么接下來就給大家介紹一下如何使用 unittest 用例失敗重運行機制。
一、unittest 用例重運行
關於 unittest 重運行機制,在 unittestreport 中提供了兩種方式,第一種選擇單個測試用例實現重運行,可以自己去標記失敗需要重運行的測試用例,第二種是針對運行的所有的測試用例,只要運行失敗的用例就會重運行改用例。那么接下來分別給大家介紹這兩個功能的使用。
單個用例重運行
如果像標記單個測試用例失敗重運行,可以直接使用 unittestreport 中的 rerun 來標記測試用例,rerun 接收兩個參數 count,和 interval。
count:用來指定用例失敗重運行的次數
interval:指定每次重運行的時間間隔
下面有三個測試用例,其中有一個 test_case_01 使用了 rerun 進行了標記,設置的失敗重運行次數為 4 次,每次間隔的時間 2 秒。
運行上述用例
生成測試報告如下圖,可以看到第一條測試用例運行了三次:
全部用例失敗重跑機制
關於所有的測試用例失敗重跑,unittestreport 中提供了一個更為簡單的使用入口,直接使用 unittestreport 中 TestRunner 對象的 rerun_run 方法即可實現所有的用例失敗重運行,rerun_run 同樣有兩個參數,count 和 interval。
count:用來指定用例失敗重運行的次數
interval:指定每次重運行的時間間隔
測試用例如下:
使用 unittestreport 的重運行機制,運行上述用例
執行測試報告如下圖,可以看到兩個失敗的用例,都重復運行了三次: