利用BeautifulReport 模塊生成html報告
import BeautifulReport as br#引入包,之后設置一下別名 br = br.BeautifulReport(test_suit)#將用例集加入到對象中 br.report(description="beautifulreport",filename="brtest",log_path="")#執行用例統計結果,並生成測試報告 #filename是測試報告的名稱,log_path可以指定測試報告的存儲目錄,這個參數可選
如上操作report方法實現了用例的執行、用例執行結束的結果統計、生成測試報告等操作。
接下來就通過代碼的跟蹤來了解一下BeautifulReport 底層結構,便於我們了解代碼,以后可以根據自己的實際需求來更改生成的報告。注意:讀如下代碼時一定要配合着底層代碼一起閱讀
1、self.suit.run
因為測試用例所在的類繼承了unittest.TestCase,所以這里所調用的run方法是TestCase類中的run()方法,進入方法
其中testPartExecutor是用來執行測試用例的具體方法的
addSuccess當用例斷言校驗成功是會執行addSuccess方法,因為result對象是run()方法的參數,調用run的方法所屬類繼承了ReportTestResult類,而ReportTestResult最后又繼承了TestResult類,所以這個addSuccess方法在TestResult這個類當中,但是因為ReportTestResult重寫了TestResult中addSuccess的這個方法,所以最后跟蹤到的是ReportTestResult類。
這個方法執行之后呢,繼續執行stopTest()方法,這個方法也被ReportTestResult類重寫
self.result_list.append這個方法將測試用例執行結果的信息寫入到result_list中
可以通過get_testcase_property這個方法增加屬性信息,最后向result_list列表中增加屬性值,也可以更改最初傳過來的參數-(TestCase)測試用例實體類test的內容以便獲取test的信息之后操作所需要的屬性信息
2、self.stopTestRun
所有測試用例執行完成之后執行stopTestRun方法,方法體中有一個str(MakeResultJson(item))方法,首先實例化MakeResultJson類,將item數據加入這個類中,之后將對象轉為字符串,通過str方法,又因為MakeResultJson里面重寫了__repr__方法,所以在對象轉為字符串是,str(MakeResultJson(item))先調用的str,之后str內部調用的__repr__,又因為MakeResultJson重寫了__repr__,所以調用的是最新的__repr__方法
如上的這個方法keys的集合就是顯示在html頁面上面的關鍵字信息,所以可以通過更改此方法,從而更改html頁面的元素信息
3、self.output_report()