1. 测试报告需求
在自动化测试过程中,往往需要对测试后的结果汇总成测试报告,这里,使用HTMLTestRunner可以实现。
不过网上只有Python2的HTMLTestRunner.py文档,具体位置在:http://tungwaiyip.info/software/HTMLTestRunner.html。
这里有两种方式:1. 下载该文件--》修改成python3可用的;
2. 下载美化功能的Python3
这里,这两种方式都介绍一下,不过最终使用的还是第二种方式。
1.1 下载并修改成Python3兼容版本
1、第94行import StringIO
更改为: import io
2、第539行 self.outputBuffer = StringIO.StringIO()
更改为: self.outputBuffer = io.StringIO()
3、第631行 print >>sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime)
更改为: sys.stderr.write('\nTime Elapsed: %s\n' % (self.stopTime - self.startTime))
4、第642行 if not rmap.has_key(cls):
更改为: if cls not in rmap:
5、第687行 self.stream.write(output.encode('utf8'))
更改为: self.stream.write(output)
6、第766行 uo = o.decode('latin-1')
更改为: uo = o
7、第772行 ue = e.decode('latin-1')
更改为: ue = e
8、第778行 output = saxutils.escape(uo+ue),
更改为: output = saxutils.escape(str(uo)+ue),
最后将修改的HTMLTestRunner.py放置到Python/Lib中,我自己的文件位置路径为:D:\download\python\Lib
1.2 下载美化的Python3支持的HTMLTestRunnerCN.py
链接地址:/findyou/HTMLTestRunnerCN
下载与安装步骤:
1. 将整个文件压缩包下载,选择需要的HTMLTestRunnerCN.py文件或HTMLTestRunnerEN.py文件,将其复制到Lib文件夹下(这里,本人的文件夹路径为:D:\download\python\Lib)
2. 打开HTMLTestRunner文件,找到类名,这里,类名不一定为HTMLTestRunner。如下,该文件的类名为:HTMLTestReportCN。
3. 检验
打开DOS界面,输入python,再输入impot HTMLTestRunner,如果不报错,则说明安装成功。
2.生成HTML测试报告
接下来生成测试报告。在这之前,先确定整个工程的结构。
2.1 HTMLTestRunnerCN.py
将HTMLTestRUnnerCN.py放入当工程中;
2.2 1-生成测试报告.py
import unittestfrom HTMLTestRunnerCN import HTMLTestReportCNfrom selenium import webdriverfrom time import sleep# 定义测试用例的目录为当前目录下的test_case目录test_dir = './test_case'suit = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')if __name__ == '__main__':# 生成HMTL格式的报告fp = open('./test_report/result.html', 'wb')runner = HTMLTestReportCN(stream=fp,title="百度搜索测试报告",description="运行环境:Windows 8, Chrome浏览器")runner.run(suit)fp.close()
2.3 test_baidu.py
这里必须强调下,该文件名必须不能包含中文,否则在调用时就会出问题。单独测试是可以,但是要自动化测试,就会有问题。
import unittestfrom selenium import webdriverfrom time import sleepclass TestBaidu(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver = webdriver.Chrome()cls.base_url = ""def baidu_search(self, search_key):self.driver.get(self.base_url)self.driver.find_element_by_id("kw").send_keys(search_key)self.driver.find_element_by_id("su").click()sleep(2)def test_search_key_selenium(self):search_key = "selenium"self.baidu_search(search_key)self.assertEqual(self.driver.title, search_key + "_百度搜索")def test_search_key_unittest(self):search_key = "unittest"self.baidu_search(search_key)self.assertEqual(self.driver.title, search_key + "_百度搜索")@classmethoddef tearDownClass(cls):cls.driver.quit()if __name__ == '__main__':unittest.main()
3. 测试结果
3.1 运行结果
运行生成HTML测试报告文件后,会自动打开百度,分别输入selenium,unittest关键词的百度搜索页面,最终在窗口显示耗时情况:13秒左右。并在test_report文件夹中生成result.html文件。
3.2 HTML测试报告
打开result.html测试报告,看到如下界面,测试通过,没有问题!
4. 设置时间戳
import unittestfrom HTMLTestRunnerCN import HTMLTestReportCNfrom selenium import webdriverimport time# 定义测试用例的目录为当前目录下的test_case目录test_dir = './test_case'suit = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')if __name__ == '__main__':#取当前日期时间now_time = time.strftime("%Y-%m-%d %H_%M_%S")# 生成HMTL格式的报告fp = open('./test_report/'+now_time+'result.html', 'wb')runner = HTMLTestReportCN(stream=fp,title="百度搜索测试报告",description="运行环境:Windows 8, Chrome浏览器")runner.run(suit)fp.close()