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

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

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

统计饼图

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

写一段代码做试验:

import unittest
from utils.HTMLTestRunner_PY3 import HTMLTestRunner


class 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 unittest
from utils.HTMLTestRunner_PY3 import HTMLTestRunner


class 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 ,之后博主可能继续做更多修改。

转载地址:https://blog.csdn.net/huilan_same/article/details/77944829

猜你喜欢

转载自blog.csdn.net/happyuu/article/details/80677604