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
@
4264
ms
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=‘
OSError: [Errno 22] Invalid argument
”“”
所以比較好的執行方式是將命令拆開執行
$
pytest
test_baidudemo
。
py
-
s
-
q
——
alluredir
=。/
result
/
$
allure
generate
。/
result
/
-
o
。/
reports
/
——
clean