使用 HTMLTestRunner.py

Posted 微微微笑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 HTMLTestRunner.py相关的知识,希望对你有一定的参考价值。

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=umy unit test,description=uThis 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()

 

备注: 改动之后,中文也不会乱码。

以上是关于使用 HTMLTestRunner.py的主要内容,如果未能解决你的问题,请参考以下文章

python3 中引用 HTMLTestRunner.py 模块的注意事项

python HTMLTestRunner.py

python3-如何正常使用HTMLTestRunner.py,生成自动化测试报告

HTMLTestRunner.py

Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告2(使用PyCharm )

HTMLTestRunner.py 文件,已修改完成