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

  • 12
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 29
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值