【测试开发】Pytest—Html测试报告定制及封装
當我們運行完我們的測試用例后,需要一個結果展示,那就是測試報告。Pytest作為一個強大的第三方庫,也提供了輸出測試報告的插件,比如Html、Allure等,本文對Pytest-Html進行探討學習。【注:本文全過程基于IDE Pycharm 虛擬開發環境】
目錄
一、Pytest-Html介紹及安裝
二、項目詳情
1、 定制化Pytest-Html(conftest.py)
1.1、環境信息精簡
1.2、添加Summary展示的信息
1.3、增加用例描述和去除link列
2、測試用例(test_html.py)
3、測試用例運行入口(run.py)
三、Html測試報告輸出
1、執行run.py文件
2、查看html測試報告
總結
一、Pytest-Html介紹及安裝
Pytest是python的一種單元測試框架,能夠極大地提高自動化測試的效率,相較于unittest框架,Pytest使用起來更簡潔,效率更高。就本人來使用體驗來說,Pytest的自定義前/后置及數據傳參兩大功能是自動化測試不可或缺的。今天介紹一下pytest-HTML這個插件,并通過該插件將測試結果可視化。
安裝:
- 當前環境:python 3.6.8
- 前提條件:pytest (!=6.0.0,>=5.0)、pytest==5.4.3
- 安裝方式:pip install pytest-html==2.1.1 終端安裝指定版本,3.0以上有兼容性問題
二、項目詳情
以下是最為簡單的一個結構,大家可做參考,主要為大家能夠理解并運用Pytest-Html測試報告,下邊做詳細介紹。
1、 定制化Pytest-Html(conftest.py)
以下是最為原始的html報告,其實在我們實際工作中,部分環境信息不一定要在報告中詳細提現,可以適當增減;links列沒有用到,可以刪除;一般來說還可以添加一個測試用例的描述,大家學到后邊就可以理解了~
接下來就開始定制化Pytest-Html,所有內容均需要在conftest.py中配置。
首先引入相關包
import pytest from py.xml import html1.1、環境信息精簡
def pytest_configure(config):#修改Environment展示信息#添加項目名稱config._metadata["項目名稱"] = "HTML封裝測試"#刪除JAVA_HOMEconfig._metadata.pop("JAVA_HOME")#刪除Pluginsconfig._metadata.pop("Plugins")1.2、添加Summary展示的信息
def pytest_html_results_summary(prefix):'''Summary部分在此設置'''prefix.extend([html.p("測試開發組:尹煜")])1.3、增加用例描述和去除link列
這是定制化中較為重要及復雜的部分,description取值就是測試用例下的解釋行,參考3.2。
def pytest_html_results_table_header(cells):cells.insert(1,html.th('Description'))#表頭添加Descriptioncells.pop()#刪除linkdef pytest_html_results_table_row(report,cells):if hasattr(report,'description'): #判斷對象是否包含對應的屬性cells.insert(1,html.td(report.description))#表頭對應的內容cells.pop()else:print("!!!",report.longreprtext)@pytest.mark.hookwrapper def pytest_runtest_makereport(item, call): #description取值為用例說明'''doc'''outcome = yieldreport = outcome.get_result()report.description = str(item.function.__doc__)2、測試用例(test_html.py)
輸出測試報告的前提當然是存在測試用例,而且命名需符合Pytest用例設計規范(①文件名必須test_開頭,如:test_pytest_demo1.py、②類必須Test開頭、③方法名必須test_開頭)。
下邊三個用例僅供測試html報告使用,假如正常輸出報告,應該是2成功+1失敗。
- 斷言(assert+表達式),斷言驗證操作是否執行成功,相當于功能測試用例中的預期結果
3、測試用例運行入口(run.py)
此文件可以當作執行全部用例的入口,同時也可寫入pytest命令行方式,直接在pycharm中執行輸出報告,后續也方便Jenkins等持續集成工具的調用。
import os import time import pytestdef run_main():#測試用例文件路徑——參考具體項目路徑test_case = r'C:\Users\xiaowo\Desktop\TestHtml\test_html.py'#html報告命名name_html = time.strftime('%Y_%m_%d_%H', time.localtime(time.time())) + '.html'#html報告輸出路徑——參考具體項目路徑report_path = os.path.join(r'C:\Users\xiaowo\Desktop\TestHtml',name_html)#通過python代碼執行pytest命令行方式pytest.main(['-v', '--html={}'.format(report_path), '--self-contained-html', test_case])if __name__ == "__main__":run_main() #可執行輸出報告操作三、Html測試報告輸出
1、執行run.py文件
最后在run.py文件執行run_main()函數后,以實時日期作為文件名的html測試報告便會自動生成了。
2、查看html測試報告
進入2022_04_06_20.html文件后會發現是html格式,因此我們可以點擊右上角熟悉的瀏覽器進行查看,筆者選擇了Edge瀏覽器。
?下邊就是正式的html測試報告,紅方框內就是html定制化后的結果,是否合理了許多,通過,圓框內所展示的測試用例通過情況也完全符合預期結果。
總結
本文不同于新手教程,可能需要大家具備部分測試框架基礎,然后大家如果有疑問都可以評論提出,最后有不足之處請大家批評指正,希望能多結識這方面的朋友,共同學習、共同進步。
總結
以上是生活随笔為你收集整理的【测试开发】Pytest—Html测试报告定制及封装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个人越想挣钱,越挣不到钱!背后的原因是
- 下一篇: Android视频录制命令screenr