1. 程式人生 > 其它 >【Python_pytest】pytest-html 生成測試報告

【Python_pytest】pytest-html 生成測試報告

pytest-html

# pytest外掛生成一個HTML測試報告。
pip install pytest-html

 

使用

# 新增命令列引數 --html=report.html 和 --html=report.html --self-contained-html
if __name__ == "__main__":
    pytest.main(["test_debug.py",   # 測試用例
                 "--html=../report/report0414.html",   # 生成測試報告 生成assert存放的css檔案和html檔案
                 "
--self-contained-html", # 把css樣式合併到html裡 僅生成html檔案
])

 

# 執行中的日誌顯示ASCII顏色
if __name__ == "__main__":
    pytest.main(["test_debug.py",   # 測試用例
                 "-v",  # -v 顯示詳細資訊, -q 不輸出環境資訊, -s 顯示程式中的列印和日誌
                 "--html=../report/report0414.html",   # 生成測試報告
                 "
--self-contained-html", # 把css樣式合併到html裡 "--color=yes", # pytest 寫入輸出顏色 ])

 

 

 

 

 

 


  

 Allure

 

手動安裝

下載地址: https://github.com/allure-framework/allure2/releases

 

 解壓後將bin目錄新增到path 並執行目錄下 allure.bat 檔案 

# 安裝依賴包
pip install allure-pytest

 

 

 

 

 

 

 

 

 

 

 

 遇到的問題


 

1、在py檔案中執行執行測試用例時,未生成測試報告

if __name__ == "__main__":
    pytest.main(["test_debug.py",   # 測試用例
                 "-q",  # -v 顯示詳細資訊, -q 不輸出環境資訊, -s 顯示程式中的列印和日誌
                 "--html=../report/report0414.html",   # 生成測試報告
                 "--self-contained-html",  # 把css樣式合併到html裡
                 ])

 

方法一:

  原因:pytest沒有main函式,會根據目錄執行復核pytest規則的測試用例

  解決:將pycharm 的測試執行程式改為 unittest

 

 

2、使用 loguru 外掛生成的日誌,在生成html報告時 中文亂碼

 

解決方案:將loguru 日誌控制檯輸出關閉並新增logging輸出到控制檯

# 刪除以前新增的處理程式並停止向其接收器傳送日誌。
logs.remove(handler_id=None)  # 清除之前的設定
# 整合loguru到控制檯(即html報告)
class PropogateHandler(logging.Handler):
    def emit(self, record):
        logging.getLogger(record.name).handle(record)
logs.add(PropogateHandler(), format="{time:YYYY-MM-DD HH:mm:ss} | {message}")