咱们作测试的人员们都知道测试完成后,确定是会生成一个测试报告,那么当咱们作自动化的时候,这个自动化报告也能够自动生成吗?python固然能够了!html
HTMLTestRunner是Python标准库的unittest模块的扩展。它生成易于使用的HTML测试报告。python
下载地址:http://tungwaiyip.info/software/HTMLTestRunner.htmljson
下载完成后直接放到咱们代码文件夹中,也能够放在其余地方,只要咱们用的时候,能够直接调用就OKapi
下载下来后能够先看下其中代码,可否找到一些简单的使用方法。(因为文件过大,这里我只呈现了部分咱们须要用到的代码内容)post
# 输出到文件 fp = file('my_report.html', 'wb') runner = HTMLTestRunner.HTMLTestRunner( stream=fp, title='My unit test', description='This demonstrates the report output by HTMLTestRunner.' ) # 使用外部样式表。 # 运行测试 runner.run(my_test_suite)
固然了咱们只用这么多就能够生成报告了。学习
话很少说,直接就是干,不过写以前咱们先理下思路:测试
这里我仍是直接调用前面写的通用代码了ui
# coding:utf-8 import unittest import requests class Music(unittest.TestCase): def select(self,name): url = 'https://api.apiopen.top/searchMusic' data = { "name":name } r = requests.post(url,data=data) b = r.json()['result'][0]['title'] return b def test01(self): b = '断桥残雪' a = self.select(b) self.assertEqual(b,a) print('这个是用例一') def test02(self): a = '说好不哭' b = self.select(a) self.assertEqual(a,b) print('这个是用例二') def test03(self): a = '芒种' b = self.select(a) self.assertEqual(a,b) print('这个是用例三') if __name__ == '__main__': unittest.main()
经过os模块进行找到当前文件夹,使报告生成当前文件夹中url
# 当前文件夹路径 report_path = os.path.dirname(os.path.realpath(__file__)) # 测试报告地址 report_abspath = os.path.join(report_path, "result.html") fp = open(report_abspath, "wb") # 报告详情 runner = HTMLTestRunner_cn.HTMLTestRunner(stream=fp, title=u'自动化测试报告,测试结果以下:', description=u'用例执行状况:')
经过unittest中执行用例的方法,来批量执行用例spa
# 实例化 testunit = unittest.TestSuite() # 加载用例 testunit .addTests(unittest.TestLoader().loadTestsFromTestCase(Music)) # 执行用例 runner.run(testunit)
经过用例,咱们能够看到这里已经彻底生成报告了。
固然确定有的小伙伴们会说,这里不能看到经过的用例都是哪些?这个地方能够解决吗? python这么强大,这个确定能够解决啊。不过须要咱们在用例中添加注释。这样的话就会生成了详细内容。所有代码以下(添加注释后)
# coding:utf-8 import unittest import requests import os from case import HTMLTestRunner_cn class Music(unittest.TestCase): def select(self,name): url = 'https://api.apiopen.top/searchMusic' data = { "name":name } r = requests.post(url,data=data) b = r.json()['result'][0]['title'] return b def test01(self): ''' 歌名:断桥残雪 ''' b = '断桥残雪' a = self.select(b) self.assertEqual(b,a) print('这个是用例一') def test02(self): ''' 歌名:说好不哭 ''' a = '说好不哭' b = self.select(a) self.assertEqual(a,b) print('这个是用例二') def test03(self): ''' 歌名:芒种 ''' a = '芒种' b = self.select(a) self.assertEqual(a,b) print('这个是用例三') if __name__ == '__main__': # 当前文件夹路径 report_path = os.path.dirname(os.path.realpath(__file__)) # 测试报告地址 report_abspath = os.path.join(report_path, "result.html") fp = open(report_abspath, "wb") # 报告详情 runner = HTMLTestRunner_cn.HTMLTestRunner(stream=fp, title=u'自动化测试报告,测试结果以下:', description=u'用例执行状况:') # 实例化 testunit = unittest.TestSuite() # 加载用例 testunit .addTests(unittest.TestLoader().loadTestsFromTestCase(Music)) # 执行用例 runner.run(testunit) # 关闭报告 fp.close()
怀着小小的激动去查看了生成的报告,果真没有令我失望,已经完成展示出来了~~
这一篇安静主要介绍了unittest如何生成测试报告,若是哪里有不懂的或者不清楚的能够下方留言,看到后第一时间回复~~~共同进步,共同窗习