自項目成熟后,一直都是使用 BeautifulSoap 和 Allure 交替查看測試報告。每天查看那么多次,但對他們卻是一知半解。
11號閑來無事,找了一些小練習研究 Allure 的使用,在使用 Pytest 命令輸出報告時,一直不得解,每個參數表示什么意思、allure 的數據如何生成、報告路徑又是
怎樣定義的。
在輸出報告時,有兩種方式:
第一種方式
$ pytest test_baidudemo.py -s -q --alluredir=./result/
# 該命令表示執行 test_baidudemo.py 文件,-q:靜默輸出方式,,即簡要輸出信息;-s:顯示調試或打印的內容; 最后將allure結果數據保存到指定目錄
$ allure serve ./result
Generating report to temp directory...
Report successfully generated to C:\***\***\AppData\Local\Temp\5370638618015012312\allure-report
Starting web server...
2021-01-12 23:43:54.179:INFO::main: Logging initialized @4264ms to org.eclipse.jetty.util.log.StdErrLog
Server started at <http://172.*.*.*:6313/>. Press <Ctrl+C> to exit
# 打開allure報告時,需要打開allure服務,serve 生成在線報告,保存在默認的臨時路徑下。自動調用默認瀏覽器顯示報告
# 有可能會調用IE瀏覽器,無法顯示,將地址復制后在谷歌中打開即可
第二種方式
$ pytest test_baidudemo.py -s -q --alluredir=./result/
# 生成結果數據,json 格式,保存到 result/ 文件中
$ allure generate --clean ./result/
"""
將結果數據生成 html 報告,allure 會在當前目錄檢查是否有 allure-report 文件,
沒有的話會自動生成 allure-report 文件,並將報告內容保存在這個文件夾下面。--clean 參數,清除歷史數據
前面的 generate ./result/ ,generate 后面一定要跟保存結果數據的路徑,allure 才能取到數據,正確的生成報告,否則報告中數據顯示 NaN%
或者使用命令 allure generate ./result/ -o ./report/ --clean
-o 參數是將報告內容保存到指定的文件夾下,此時 allure 不再保存到默認的目錄下面
注意: 若是使用了參數化方式,生成 allure 報告時,不能用管道符將前后的命令連接起來使用,容易發生錯誤。
$ pytest test_baidudemo.py -s -q --alluredir=./result/ | allure generate ./result/ -o ./reports/ --clean
# 此方式容易報錯,比如,第一個用例執行完,命令就進入生成報告環節,但第二個用例尚未開始,此時系統會報錯,導致執行失敗。
部分錯誤信息如下
OSError: [Errno 22] Invalid argument
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='cp936'>
OSError: [Errno 22] Invalid argument
"""
所以比較好的執行方式是將命令拆開執行
$ pytest test_baidudemo.py -s -q --alluredir=./result/
$ allure generate ./result/ -o ./reports/ --clean