pytest 使用 allure 生成報告的一點小注意


自項目成熟后,一直都是使用 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM