pytest(2)-pytest-html測試報告

給你一頁白紙發表於2022-02-13

前言

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

相關文章