利用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()