TypeError:write()参数必须是str,而不是字节,UTF-16

问题描述:

所以我使用Selenium和python运行测试用例,并且我想为这些测试生成HTML Test报告。我发现这个资源应该为我做,http://tungwaiyip.info/software/HTMLTestRunner.html万一任何人感兴趣似乎真的很好,但我不断收到此错误。TypeError:write()参数必须是str,而不是字节,UTF-16

File "facebook.py", line 21, in <module> 
HTMLTestRunner.main() 
File "C:\Users\kporika\AppData\Local\Programs\Python\Python35-32\lib\unittest\main.py", line 94, in __init__ 
self.runTests() 
File "C:\Users\kporika\PycharmProjects\Partha\HTMLTestRunner.py", line 816, in runTests 
unittest.TestProgram.runTests(self) 
File "C:\Users\kporika\AppData\Local\Programs\Python\Python35-32\lib\unittest\main.py", line 255, in runTests 
self.result = testRunner.run(self.test) 
File "C:\Users\kporika\PycharmProjects\Partha\HTMLTestRunner.py", line 631, in run 
self.generateReport(test, result) 
File "C:\Users\kporika\PycharmProjects\Partha\HTMLTestRunner.py", line 688, in generateReport 
self.stream.write(output.encode('UTF-16')) 
TypeError: write() argument must be str, not bytes 

的测试报告生成的代码是在这里https://github.com/tungwaiyip/HTMLTestRunner/blob/master/HTMLTestRunner.py创作者的GitHub页面我该如何解决?

ps我正在运行python版本3.5,如果有帮助。

+1

你有什么试过,结果是什么?请阅读如何提出一个好问题的帮助主题。您需要研究自己的问题,查找代码示例等,并编写自己的代码来解决问题。如果你做了所有这些,但仍然无法解决问题,那么请回过头来编辑你的问题,并从你做的研究,你试过的代码,结果是什么......任何错误信息等等中添加笔记。 – JeffC

HTMLTestRunner是一个python2模块。 Python3区分strbytes对象,而python2有unicodestr

如错误消息所述,第688行需要str而不是bytes对象。如the documentation clarifiesstr.encodestr对象转换为bytes对象。而不是self.stream.write(output.encode('UTF-16')),您需要修改第688行至self.stream.write(output)

请注意,由于python2/3不兼容,很可能会有更多错误。