1. 程式人生 > >我又把HTMLTestRunner改了一下,支援Python3,新增echarts統計餅圖

我又把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示例

很方便做真正的引數化。

喜歡的同學可以去 ,之後博主可能繼續做更多修改。