我又把HTMLTestRunner改了一下,支持Python3,添加echarts统计饼图

来源:互联网 发布:医药市场数据分析实例 编辑:程序博客网 时间:2024/05/16 05:26

之前用Bootstrap把HTMLTestRunner改的美观了一点,同时改成了中文的报告,但那个是基于Python2的,见这篇博文 selenium之 输出报告,对HTMLTestRunner进行样式调整后的示例。

这次呢,博主又给它改成了Python3的版本,同时给它加上了一个用echarts实现的统计饼图。效果如下:

统计饼图

经过评论区一位同学提醒,把用导入js文件的方式改成了用cdn的方式,不需要建文件夹放js文件了,生成html报告,联网就ok了

写一段代码做试验:

import unittestfrom utils.HTMLTestRunner_PY3 import HTMLTestRunnerclass TestHTMLTestRunnerPY3(unittest.TestCase):    def test_py3_success(self):        self.assertEqual(1+1, 2)    def test_py3_fail(self):        self.assertEqual(1+1, 3)class TestHTML(unittest.TestCase):    def test_html_success(self):        self.assertEqual(1+2, 3)class TestError(unittest.TestCase):    def test_error(self):        self.assertEqual(1/0, 1)if __name__ == '__main__':    import os    report = os.path.join('E:/PY/P2C_test/report/report.html')    st = unittest.TestSuite()    st.addTests([TestHTMLTestRunnerPY3('test_py3_success'), TestHTMLTestRunnerPY3('test_py3_fail'),                 TestHTML('test_html_success'), TestError('test_error')])    with open(report, 'wb') as f:        runner = HTMLTestRunner(f, verbosity=2, title='示例测试报告', description='执行人:灰蓝')        runner.run(st)

执行后生成报告,打开report.html,如图:

示例report

Python3的unittest中带了subTest,这是在Python2的unittest中没有的,需要引入unittest2才行。博主这次修改也为报告增加了subTest的支持。

示例修改如下:

import unittestfrom utils.HTMLTestRunner_PY3 import HTMLTestRunnerclass TestHTMLTestRunnerPY3(unittest.TestCase):    """ 测试PY3 HTMLTESTRUNNER """    def test_py3_success(self):        """ 此用例成功 """        self.assertEqual(1+1, 2)    def test_py3_fail(self):        """ 此用例失败 """        self.assertEqual(1+1, 3)class TestHTML(unittest.TestCase):    """ 测试PY3 HTMLTESTRUNNER 2 """    def test_html_success(self):        """ 此用例成功 """        for i in range(5):            with self.subTest(data=i):  # 注意这里subTest的用法                self.assertEqual(1+2, 3)class TestError(unittest.TestCase):    """ 测试PY3 HTMLTESTRUNNER ERROR 3 """    def test_error(self):        """ 此用例出错 """        self.assertEqual(1/0, 1)if __name__ == '__main__':    import os    report = os.path.join('E:/PY/P2C_test/report/report.html')    st = unittest.TestSuite()    st.addTests([TestHTMLTestRunnerPY3('test_py3_success'), TestHTMLTestRunnerPY3('test_py3_fail'),                 TestHTML('test_html_success'), TestError('test_error')])    with open(report, 'wb') as f:        runner = HTMLTestRunner(f, verbosity=2, title='示例测试报告', description='执行人:灰蓝')        runner.run(st)

修改后,我们在其中一个用例中使用了subTest,原来的一个用例会拆分成5个子用例执行,输出的报告如图:

subTest示例

很方便做真正的参数化。

喜欢的同学可以去 博主的github去fork ,之后博主可能继续做更多修改。

原创粉丝点击