前言
關於unittestreport最初在開發的時候,最初只是計划開發一個unittest生成html測試報告的模塊,所以起名叫做unittestreport。在開發的過程中結合使用的小伙伴的一些反饋,所以慢慢的擴展了更多的功能進去。之前在寫unittestreport的時候,也陸續寫了幾遍關於unittestreport相關功能的使用,每次都是一個特定的功能,這邊給出一遍系統的使用文檔來給大家介紹一下unittestreport的功能。
-
關於unittestreport是什么?
-
unittestreport是基於unittest開發的的一個功能擴展庫,為unittest提供了一些常用的擴展功能:
-
HTML測試報告生成
-
測試用例失敗重運行
-
發送測試結果及報告到郵箱
-
unittest數據驅動
-
-
-
安裝命令:
cmd命令行下輸入下面的命令進行安裝
pip install unittestreport
-
備注:
-
開發者:檸檬班—木森
-
E-mail:musen_nmb@qq.com
-
大家在使用過程中發現bug,可以聯系我,以便優化解決!
-
一、HTML測試報告生成
unittestteport中封裝了一個TestRunner類,可以用來代替unittest中的TextTestRunner來執行測試用例,執行完測試用例之后會自動生成測試報告。並且有多種報告風格可選
-
模塊導入
from unittestteport import TestRunner
-
使用案例
runner = TestRunner(test_suite)
runner.run()
-
關於TestRunner初始化參數
-
suites: 測試套件(必傳)
-
filename: 指定報告文件名
-
report_dir:指定存放報告路徑
-
title:指定測試報告的標題
-
templates: 可以指定1,2,3三個風格的模板
-
tester:測試人員名稱
-
-
報告樣式展示:
二、測試用例失敗重運行
關於unittest重運行機制,unittestreport中提供了兩種方式
-
方式一: rerun裝飾器
-
使用案例:使用rerun裝飾失敗需要重運行的用例,該用例失敗后會自動重運行
from unittestreport import rerun class TestClass(unittest.TestCase): @rerun(count=4, interval=2) def test_case_01(self): a = 100 b = 99 assert a == b
-
用例運行
runner = TestRunner(test_suite) runner.run()
-
參數說明:
-
count:用來指定用例失敗重運行的次數
-
interval:指定每次重運行的時間間隔
-
-
-
方式二:TestRunner.rerun方法
-
使用案例:所有的用例失敗,只要有失敗的用例,會自動重運行該用例
-
用例正常編寫即可
-
運行是使用TestRunner.rerun_run方法運行
runner = TestRunner(suite=suite) runner.rerun_run(count=3, interval=2)
-
參數說明:
-
count:用來指定用例失敗重運行的次數
-
interval:指定每次重運行的時間間隔
-
-
三、郵件發送測試報告
unittestreport內部實現了發生測試結果到郵箱的方法,執行完測試用例之后調用發送測試報告的方法即可。發郵件的方法介紹:TestRunner類中實現了send_email方法,可以方便用戶,快速發送郵件。
-
使用案例
runner = TestRunner(suite) runner.run() runner.send_email(host="smtp.qq.com", port=465, user="musen_nmb@qq.com", password="algmmzptuasdabab", to_addrs="3247119728@qq.com")
-
參數介紹
-
host: smtp服務器地址
-
port:端口
-
user:郵箱賬號
-
password:smtp服務授權碼
-
to_addrs:收件人郵箱地址(一個收件人傳字符串,多個收件人傳列表)
-
-
收到的郵件樣式
四、數據驅動的使用
關於數據驅動這邊就不給大家做過多的介紹了,數據驅動的目的是將測試數據和用例邏輯進行分離,提高代碼的重用率,以及用例的維護,關於數據驅動本,unittestreport.dataDriver模塊中實現了三個使用方法,支持使用列表(可迭代對象)、json文件、yaml文件來生成測試用例,接來分別給大家介紹一下使用方法:
-
1、使用介紹
from unittestreport.dataDriver import ddt, list_data,json_data,yaml_data
-
第一步:使用ddt裝飾測試用例類
-
第二步:根據使用的數據選擇對應的方法進行驅動
-
-
2、使用案例
-
一、用例保存在可迭代對象中(如列表):使用list_data
from unittestreport import ddt, data @ddt class TestClass(unittest.TestCase): cases = [{'title': '用例1', 'data': '用例參數', 'expected': '預期結果'}, {'title': '用例2', 'data': '用例參數', 'expected': '預期結果'}, {'title': '用例3', 'data': '用例參數', 'expected': '預期結果'}] @data(cases) def test_case(self, data): pass
-
二、用例保存在json文件中:使用json_data
from unittestreport import ddt,json_data @ddt class TestClass(unittest.TestCase): @yaml_data("C:/xxxx/xxx/cases.json") def test_case(self, data): pass
-
json文件中的數據格式
cases.json文件
[ { "title": "用例1", "data": "用例參數", "expected": "預期結果" }, { "title": "用例2", "data": "用例參數", "expected": "預期結果" }, { "title": "用例3", "data": "用例參數", "expected": "預期結果" } ]
-
-
三、用例保存在yaml文件中:使用yaml_data
from unittestreport import ddt,yaml_data @ddt class TestClass(unittest.TestCase): @yaml_data("C:/xxxx/xxx/cases.yaml") def test_case(self, data): pass
-
yaml文件中的數據展示
cases.yaml文件
- title: 用例1 data: 用例參數 expected: 預期結果 - title: 用例2 data: 用例參數 expected: 預期結果 - title: 用例4 data: 用例參數 expected: 預期結果
-
-
-
2、注意點:
-
關於使用ddt的時候進行數據驅動,指定測試報告中的用例描述:
-
測試報告中的用例描述默認使用的是用例方法的文檔字符串注釋,
-
如果要給每一條用例添加用例描述,需要在用例數據中添加title或者desc字段,字段對應的數據會自動設置為測試報告中用例的描述
-