HTMLTestRunner.py python 2版本
下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html
教程:http://www.wtoutiao.com/p/zedDKR.html
使用时,先建立一个”PyDev Package“,将下载下来的HTMLTestRunner.py文件拷贝在该目录下。
例子:testcase5_dynamic.py
import unittest from dev.widget import Widget class WidgetTestCase(unittest.TestCase): def setUp(self): self.widget=Widget() def tearDown(self): self.widget.dispose() self.widget=None def testSize(self): self.assertEqual(self.widget.getSize(), (40,40), "Wrong") def testResize(self): self.widget.resize(100, 100) self.assertEqual(self.widget.getSize(), (100,100), "Wrong")
html_report.py:
#coding:utf-8 from lib import HTMLTestRunner import unittest from testcase5_dynamic import WidgetTestCase if __name__==‘__main__‘: suite=unittest.makeSuite(WidgetTestCase) filename=‘D:\\myreport.html‘ fp=file(filename,‘wb‘) runner=HTMLTestRunner.HTMLTestRunner(fp,title=u‘my unit test‘,description=u‘This is a report test‘) runner.run(suite)
Run的时候,需要使用Python Run,使用Python unit-test跑测试生成不了myreport.html,目前还不知道为什么。
有时候,不会立即生成D:\\myreport.html,我们可以自己先建立一个空的myreport.html,这样再运行之后打开就会看到报告内容。
HTMLTestRunner.py 的python3 版本
参考:http://bbs.chinaunix.net/thread-4154743-1-1.html
由于 HTMLTestRunner.py 原本就是python2版本,目前还没找到python3版本,所以需要我们自己修改 HTMLTestRunner.py 文件。
1. 修改的地方
问题一:No module named StringIO
解决方法:
第94行引入的名称要改,改成import io,539行要改成self.outputBuffer = io.BytesIO()
问题二:AttributeError: ‘dict‘ object has no attribute ‘has_key‘
解决方法:
到642行去做修改,if not rmap.has_key(cls): 需要换成 if not cls in rmap:
问题三:‘str‘ object has no attribute ‘decode‘
解决方法:
python3 里面对字符的操作中,decode已经拿掉了。
定位一下,报在了772行,ue = e.decode(‘latin-1‘),直接改成 ue = e ,另外766还有类似的uo = o.decode(‘latin-1‘),改成 uo=o ;
问题四 :TypeError: can‘t concat bytes to str
解决方法:
那么778行的内容escape(uo+ue) ,将uo变成str类型即可,可修改该处内容为escape(uo.decode(‘utf-8‘)+ue)
问题五:TypeError: unsupported operand type(s) for >>: ‘builtin_function_or_method‘ and ‘RPCProxy‘
解决方法:
python2 和 python3 的print是很不同的,那么在3中,print 后面是不会跟>> 这样的,所以到631行,把print的语句修改掉,原来是print >>sys.stderr, ‘\nTime Elapsed: %s‘ % (self.stopTime-self.startTime), 可改成 print (sys.stderr, ‘\nTime Elapsed: %s‘ % (self.stopTime-self.startTime))
2. 保存
修改后对HTMLTestRunner.py 保存一下。
3. 调用语句更改
python3 里面打开文件使用 open,不要再去用file了。
即 fp = file(filename,‘wb‘)替换成 fp = open(filename,‘wb‘);
关闭该文件可用fp.close()
备注: 改动之后,中文也不会乱码。