因为觉得HTMLTestRunner原来的样式太难看,而且都是英文的报告,故而对其进行了一些小小的改动,使其输出中文报告,样式也用bootstrap做了点调整,下面用个示例展示下:
import unittest
class ExampleCase1(unittest.TestCase):
u'''此class包含两个用例:add - ok, minus - FAIL'''
def setUp(self):
self.a = 4
self.b = 3
def test_add(self):
u'''用例1,add,此用例成功通过'''
self.assertEqual(self.a + self.b, 7)
def test_minus(self):
u'''用例2,minus,此用例执行失败,4-3!=2'''
print u'中文xxxxxxxxxxxxxxxxxxxx'
self.assertEqual(self.a - self.b, 2)
class ExampleCase2(unittest.TestCase):
u'''此class包含一个用例:plus - ERROR'''
def setUp(self):
self.a, self.b = 4, 3
def test_plus(self):
u'''用例3,plus,此用例执行出错,因为c未定义'''
self.assertEqual(self.a * self.b, c)
class ExampleCase3(unittest.TestCase):
u'''此class包含一个用例:divide - ok'''
def setUp(self):
self.a, self.b = 4, 2
def test_devide(self):
u'''用例4,divide,此用例执行成功'''
self.assertEqual(self.a / self.b, 2)
if __name__ == '__main__':
from HTMLTestRunner import HTMLTestRunner
report_title = u'Example用例执行报告'
desc = u'用于展示修改样式后的HTMLTestRunner'
report_file = 'D:\\ExampleReport.html'
testsuite = unittest.TestSuite()
testsuite.addTest(ExampleCase1("test_add"))
testsuite.addTest(ExampleCase1("test_minus"))
testsuite.addTest(ExampleCase2("test_plus"))
testsuite.addTest(ExampleCase3("test_devide"))
with open(report_file, 'wb') as report:
runner = HTMLTestRunner(stream=report, title=report_title, description=desc)
runner.run(testsuite)
主要的修改有:
- 报告内容改成中文
- 简单调整下样式
- 原来报错信息太长会出现横向滚动条,改为折行显示
同时使用时注意几个细节:
- 在每个class和testcase method第一行添加段落注释,会被当做对这个用例的描述,在报告中输出,这样报告看起来更清晰漂亮一些。
- 所有的控制台输出信息都会被捕捉并输出到报告中,所以适当直接用print输出一些辅助信息,能够让报告可读性更强
- 注释以及print的信息含中文,则要用unicode形式输出,即引号前加u的形式