前言
上一篇文章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 生成更為強大的測試報告,這個留後面探究。