我又把HTMLTestRunner改了一下,支援Python3,新增echarts統計餅圖
阿新 • • 發佈:2019-01-10
之前用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,如圖:
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個子用例執行,輸出的報告如圖:
很方便做真正的引數化。
喜歡的同學可以去 ,之後博主可能繼續做更多修改。