前言
上一篇文章pytest簡介中,執行測試用例后,在 pycharm 控制台(方式一)或 Terminal(方式二)中可以查看測試結果。但是在實際的接口自動化項目中一般需要生成直觀的測試報告,這個測試報告聚合了所有測試用例的執行情況。
在 pytest 中提供了生成html格式測試報告的插件 pytest-html
安裝
安裝命令如下:
pip install pytest-html
使用
我們已經知道執行用例的兩種方式,pytest.main()執行和命令行執行,而要使用pytest-html生成報告,只需要在執行時加入參數--html=報告完整路徑,所以同樣有兩種生成報告的方式。
-
命令行生成
# 指定報告名稱,生成在當前目錄下 pytest --html=接口自動化測試報告.html # 指定報告生成路徑 pytest --html=E:/report/接口自動化測試報告.html -
pytest.main()生成使用
pytest.main()同樣也可以生成測試用例,但需要注意,直接在測試用例里面執行pytest.main([--html=報告名稱.html"])不會生成測試報告,而是需要在項目執行文件如run.py中使用pytest.main([--html=接口自動化測試報告.html"]),然后再運行run.py文件,才會生成報告。例如:test_demo.py代碼如下import pytest import requests, json class TestDemo: def test_get_all_users(self): '''查詢所有用戶信息''' url = "http://127.0.0.1:5000/users" res = requests.get(url=url).text res = json.loads(res) assert res['code'] == 0 def test_register(self): '''注冊用戶''' headers = {"Content-Type": "application/json;charset=utf8"} url = "http://127.0.0.1:5000/register" data = { "username": "張學友", "password": "123456", "sex": "0", "telephone": "13823456789", "address": "北京東城區" } res = requests.post(url=url, headers=headers, json=data).text res = json.loads(res) assert res['code'] == 0 if __name__ == '__main__': pytest.main(["--html=接口自動化測試報告.html"])這里直接運行
test_demo.py不能生成測試報告,需要編寫專門的運行模塊,run.py代碼如下:import pytest if __name__ == '__main__': pytest.main(['--html=接口自動化測試報告.html'])
報告展示
運行后會生成 assets 的文件夾以及 .html 文件,.html 文件就是測試報告,結果如下:

在瀏覽器中打開后展示如下:

點擊報告Results中對應的測試用例,能展示具體的執行日志。
總結
使用pytest-html生成的測試報告相對較為簡潔,展示內容也相對精簡,對報告樣式要求不高的話完全夠用了。
當然,pytest 還可以結合 Allure 生成更為強大的測試報告,這個留后面探究。
