unittest生成测试报告

此版本的运行和安装环境是在linux下,使用vscode配置的

首先准备好测试代码

以下是简单的一份

 1 import unittest
 2 import HTMLTestRunner
 3 
 4 
 5 class TestCalc(unittest.TestCase):
 6     def testcc(self):
 7         '''this is first case'''
 8         self.assertEqual(1, 1)
 9         print('first case')
10 
11     def testaa(self):
12         '''this is second case'''
13         self.assertEqual(2, 2)
14         print('second case')
15 
16     def testdd(self):
17         '''this is third case'''
18         print('third case')
19 
20     def testbb(self):
21         '''this is forth case'''
22         print('forth case')
23 
24 
25 if __name__ == "__main__":
26     # HTMLTestRunner.main()
27     suite1 = unittest.TestSuite()
28     suite1.addTest(TestCalc("testaa"))
29     suite1.addTest(TestCalc("testcc"))
30 
31     with open("SenderResult.txt", "a") as f:
32         TXT_runner = unittest.TextTestRunner(stream=f, verbosity=2)
33         TXT_runner.run(suite1)
34 
35     suite2 = unittest.TestSuite()
36     suite2.addTest(TestCalc("testaa"))
37     suite2.addTest(TestCalc("testcc"))
38     f = open('Easy_test.html', 'wb')
39     runner = HTMLTestRunner.HTMLTestRunner(
40         stream=f,
41         title='unittest case title',
42         description='this is case description')
43     runner.run(suite2)
44     f.close()

模块 是使用了pip3 install HTMLTestRunner之后自动安装的,然后去python的安装目录lib,查看是否有HTMLTestRunner.py文件,没有的话要下载一份放在lib目录下

然后要把HTMLTestRunner.py这个文件的一些内容修改一下才可以运行不报错

 具体的修改内容如下:

第94行,将import StringIO修改成import io

第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer = io.StringIO()

第642行,将if not rmap.has_key(cls):修改成if not cls in rmap:

第766行,将uo = o.decode('latin-1')修改成uo = e

第775行,将ue = e.decode('latin-1')修改成ue = e

第631行,将print >> sys.stderr, ' Time Elapsed: %s' % (self.stopTime-self.startTime)修改成print(sys.stderr, ' Time Elapsed: %s' % (self.stopTime-self.startTime))

好看一些的报告资源:

https://pypi.org/project/html-testRunner/

或直接用pip安装:pip3 install html-testRunner

注意:

每一个class类都会生成一份报告,所以运行一次py文件,有几个测试类就会生成几份报告

把几份报告合并到一起的办法:

cat A.html B.html >> NEW.html

这种合并的方式不止适用于html,text文件也适用(Windows上把cat换成copy即可)

报错:

1.报错仍找不到模块HTMLTestRunner

我的解决方法是暂且把HTMLTestRunner.py这个文件放到脚本的同级目录中去直接调用

2.文件运行成功但并没有生成html的报告

是由于(在linux上的vscode中编辑的)没有把报告生成的路径指明,用绝对路径指明报告位置后就成功生成了html报告

原文地址:https://www.cnblogs.com/RuiRuia/p/13912898.html