一、生成测试报告时遇到问题 TypeError: a bytes-like object is required, not ‘str’
项目场景:
场景:使用python做自动化测试,用HTMLTestRunner生成自动化测试报告
问题描述:
例如:做自动化测试时,用HTMLTestRunner生成自动化测试报告,报错TypeError: a bytes-like object is required, not ‘str’
Traceback (most recent call last):
File "D:\AppFiles_F\Test\ui-test\htmltestrunner\get_report.py", line 17, in <module>
runner.run(discover)
File "D:\software\Programs\Python\Python312\Lib\HTMLTestRunner.py", line 631, in run
self.generateReport(test, result)
File "D:\software\Programs\Python\Python312\Lib\HTMLTestRunner.py", line 692, in generateReport
self.stream.write(output)
TypeError: a bytes-like object is required, not 'str'
原因分析:
上网查找解决方法时,都会告诉是python2和python3的版本问题,或是str/bytes类型问题。但是现在的python3版本都已经做了修改,不需要自己手动改动,如果上述两种问题都没能解决,可以查看自己的open方法是否是只可读。
解决方案:
改前:open(r"…/report/test_report%s.html"%get_time,‘wb’)
改后:open(r"…/report/test_report%s.html"%get_time,‘w’)
二、提示:<_io.TextIOWrapper name=’’ mode=‘w’ encoding=‘utf-8’>
解决方法:
将HTMLTestRunner脚本的第632行的 :
print >> sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime)
或:
print(sys.stderr, ‘\nTime Elapsed: %s’ % (self.stopTime-self.startTime))
修改为:
sys.stderr.write(’\nTime Elapsed: %s\n’ % (self.stopTime - self.startTime))
PS:HTMLTestRunner脚本一般存放在Python安装地址的Lib文件夹下