【问题标题】:TypeError: write() argument must be str, not bytes, UTF-16TypeError: write() 参数必须是 str,而不是字节,UTF-16
【发布时间】:2016-07-06 18:56:33
【问题描述】:

所以我正在使用 Selenium 和 python 运行测试用例,并且我想为这些测试生成 HTML 测试报告。我找到了应该为我做的这个资源,http://tungwaiyip.info/software/HTMLTestRunner.html 以防万一有人感兴趣,它看起来真的很好,但我一直收到这个错误。

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 版。

【问题讨论】:

  • 您尝试了哪些方法,结果如何?请阅读有关如何提出好问题的帮助主题。您需要研究自己的问题,查找代码示例等并编写自己的代码来解决问题。如果您做了所有这些但仍然无法弄清楚,那么回来编辑您的问题并添加您所做的研究中的注释,您尝试过的代码以及结果是什么......任何错误消息等。

标签: python selenium selenium-webdriver typeerror


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    • 2019-03-15
    • 2018-04-12
    • 2016-11-26
    相关资源
    最近更新 更多