为了生成更加直观的测试报告,引入了HTMLTestRunner 模块 ,将以html 的格式生成测试结果
为此,引入了HTMLTestRunner.py,它是Python标准库unittest模块的一个扩展。它可以生成直观的HTML测试报告。
首先,下载HTMLTestRuner.py文件。
源地址:http://tungwaiyip.info/software/HTMLTestRunner.html
这是针对Python2.7版本,那么对于Python3.x的使用,需要改动几处。同时谢谢http://www.bubuko.com/infodetail-529431.html的分享。
具体改动如下:
第94行,将import StringIO修改成import io
第539行,将self.outputBuffer = StringIO.StringIO()修改成self.outputBuffer= io.StringIO()
第631行,将print >> sys.stderr, ‘\nTime Elapsed: %s‘ %(self.stopTime-self.startTime)修改成print(sys.stderr, ‘\nTimeElapsed: %s‘ % (self.stopTime-self.startTime))
第642行,将if not rmap.has_key(cls):修改成if notcls in rmap:
第766行,将uo = o.decode(‘latin-1‘)修改成uo = e
第775行,将ue = e.decode(‘latin-1‘)修改成ue = e
第778行,将output = saxutils.escape(uo+ue),修改成output = saxutils.escape(str(uo)+str(ue)),
将上述几处改动,保存成功后,再将HTMLTestRunner.py放到C:\Python34\Lib目录中,检验是否加载成功,在Python IDLE 中输入
import HTMLTestRunner
若无报错,那么加载成功。
import unittest
import HTMLTestRunner
class TestAdd(unittest.TestCase):
def setUp(self):
pass
def test_add(self):
self.assertEqual(2+3,5,"testError")
def test_add2(self):
self.assertEqual(0+8,7,"testError")
def tearDown(self):
pass
def Suite():
suiteTest = unittest.TestSuite()
suiteTest.addTest(TestAdd("test_add"))
suiteTest.addTest(TestAdd("test_add2"))
return suiteTest
if __name__ == '__main__':
filePath = 'D:\\pyResult.html'
fp = file(filePath,'wb')
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title="Python Test Report",description="This is Python Report")
runner.run(Suite())
fp.close()
生成的测试结果截图如下: