Pytest 是 Python 第三方的測試庫。提供了比 unittest 更強大更靈活的測試機制猜揪。同時有眾多的插件可以實現(xiàn)更多測試場景。
對于 Pytest 的使用不展開來談,以后會寫關于 Pytest 庫的使用教程坝冕。這里主要展示通過 pytest 和 allure 結合實現(xiàn)漂亮的測試報告。
一份酷炫的報告瓦呼,有助于提升自動化測試逼格喂窟。
先來看看效果:
但是這玩意用起來比較麻煩,在使用過程中有很多的坑央串。
首先如果你沒有安裝 pytest 庫的話磨澡,先使用 pip 安裝一下:
pip install pytest
另外還需要安裝 pytest 支持 allure 報告的插件庫:
pip install allure-pytest
接下來在運行測試時,使用 pytest 命令運行:
pytest <測試目錄> --alluredir <測試結果存放目錄>
比如质和,我的文件夾目錄如下
那么這個命令就應該寫為:
pytest tests --alluredir report/allure_raw
-
tests
為測試用例存放目錄稳摄,告訴 pytest 應該去哪里找用例; -
report
是存放測試報告的饲宿,allure 收集 pytest 運行后產出的結果放在 allure_raw 文件夾中厦酬。
注意:這里的 allure_raw 文件夾只存放的是測試運行結果,還不是報告瘫想!報告還需要調用 allure 命令去生成仗阅。
結果是像這樣的:
還是一堆 txt 和 json 文件。
我們要生成漂亮的報告還需要一步国夜,從 allure 官網上下載最新的 allure 减噪。下載后是一個 zip 文件,把該文件解壓后放到我們目錄中的 lib 文件夾中车吹。
可以把解壓后的 bin 目錄添加到環(huán)境變量的 PATH 中筹裕,可以直接使用 allure 命令
allure
是由 allure 官方提供的命令行工具,用來將測試結果生成測試報告礼搁,啟動一個服務查看報告等等饶碘。是一個必須的命令行工具。
在生成報告前馒吴,你可以使用命令先預覽報告的內容:
allure serve report/allure_raw
接下來我們就繼續(xù)使用 allure 密令來生成測試報告扎运。
命令如下:
lib\allure-2.12.1\bin> allure generate <allure測試結果目錄> -o <存放報告的目錄> --clean
-
allure測試結果目錄
,是上面運行 pytest 命令后存放結果的地方饮戳,我們這里的目錄是 report 下的allure_raw
文件夾豪治; -
存放報告的目錄
,是最終生成的測試報告存放的目錄扯罐,我打算把生成出的報告放在 report 下的allure_report
文件夾中负拟; -
--clean
參數(shù)用來清空已有的報告,避免覆蓋時出錯歹河。
以我們的例子來生成報告的命令如下:
lib\allure-2.12.1\bin> allure generate report/allure_raw -o report/allure_report --clean
通過上面的命令運行后掩浙,就會從 allure_raw 目錄中將 pytest 運行的結果生成一個漂亮的報告花吟,存放在 allure_report 中。
然后在 pycharm 中可以通過右鍵選擇index.html
就可以看到報告了厨姚。
如果你不是用 Pycharm 的話衅澈,可以通過 allure 命令生成服務,然后查看谬墙。
>allure open /report/allure_report
運行后會啟動一個 web 服務今布,用于展示報告:
實際跑自動化用例的時候呢,可以和 Jenkins 結合后在 Jenkins 中查看報告拭抬。
當然上面的命令很雜部默,我封裝了一個函數(shù),把 pytest 常用的幾個插件的用法都加進去了造虎。
-
pytest-xdist
多并發(fā)運行傅蹂,保證測試用例的運行效率。 參數(shù)為-n 并發(fā)數(shù)
累奈,如果并發(fā)數(shù)為auto
贬派,表示自動根據當前機器的 CPU 內核數(shù)量確定并發(fā)數(shù); -
pytest-rerunfailures
測試用例出錯后澎媒,自動重試。在實際測試過程中波桩,很多時候用例失敗可能是因為網絡問題戒努,臨時的環(huán)境問題,而并非真正的 Bug镐躲。為了減少(注意是減少不是避免)這種烏龍情況的發(fā)生储玫,可以多運行幾次用例。參數(shù)為--reruns 重試次數(shù)
萤皂。
需要安裝上述兩個庫
pip install pytest-xdist
pip install pytest-rerunfailures