【Python_pytest】pytest-html 生成測試報告
阿新 • • 發佈:2022-04-15
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}")