原版的 HTMLTestRunner 只支持 python2 环境,为了使用我做了适配 python3 的改动,并记录在此
No module named StringIO
1 | self.outputBuffer = StringIO.StringIO() |
py3 中 StringIO
由 io
代替,所以导入模块时需要加上如下操作
1 | try: |
AttributeError: ‘dict’ object has no attribute ‘has_key’
py3 中去掉了 has_key()
方法,判断是否包含 key 使用 in
操作符
1 | if not rmap.has_key(cls): |
‘str’ object has no attribute ‘decode’
同样的 py3 中去掉了 decode
1 | ue = e.decode('latin-1') |
TypeError: unsupported operand type(s) for >>: ‘builtin_function_or_method’ and ‘_io.TextIOWrapper’
print
是 py3 与 py2 最不可调和的矛盾
1 | print >> sys.stderr, '\nTime Elapsed: %s' % (self.stopTime-self.startTime) |
修改后完整代码地址: https://github.com/wxnacy/study/blob/master/python/unittest_demo/HTMLTestRunner.py
测试
1 | $ wget https://raw.githubusercontent.com/wxnacy/study/master/python/unittest_demo/HTMLTestRunner.py |
打开网页的效果如下
