zoukankan      html  css  js  c++  java
  • Python HTMLTestRunner生成网页自动化测试报告时中文编码报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6

    1. 由于使用Python Selenium做网页自动化测试时,有截取网页上的中文信息保存到测试结果中,最终出现编码错误如下:

    File "D:/PycharmProjects/AutoTest/TestZone/RunTest.py", line 25, in <module>
    runner.run(discover)
    File "D:PycharmProjectsAutoTestBaseHTMLTestRunner.py", line 631, in run
    self.generateReport(test, result)
    File "D:PycharmProjectsAutoTestBaseHTMLTestRunner.py", line 678, in generateReport
    report = self._generate_report(result)
    File "D:PycharmProjectsAutoTestBaseHTMLTestRunner.py", line 745, in _generate_report
    test_list = ''.join(rows),
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 84: ordinal not in range(128)

    2.   百度了多种方案,通过设置默认的编码格式可解决,通过如下代码:

    1 import sys
    2 reload(sys)
    3 sys.setdefaultencoding('utf-8')

    设置默认编码的时候可能提示sys模块不存在'setdefaultencoding'

    sys.setdefaultencoding('utf-8')
    Traceback (most recent call last):
    File "<input>", line 1, in <module>
    AttributeError: 'module' object has no attribute 'setdefaultencoding'

    这是因为python2.5以后的版本已经移除了'setdefaultencoding',通过reload(sys)即可重新加载出'setdefaultencoding'。

     3.  问题原因:

    Pyhton2.x版本中,默认情况下,Python采用的是ascii编码方式,如下所示:

     而Python在进行编码方式之间的转换时,会将 unicode 作为“中间编码”,但 unicode 最大长度为 128 ,

    当尝试将 ascii 编码字符串转换成"中间编码" unicode 时,如果字符串超出了其范围,就抛出了如上错误。

  • 相关阅读:
    Android流畅度测试
    linux常用操作指令
    SQL语句
    客户端专项测试谈
    我的面经(ing)
    整理面试题
    百度质量部测试开发面试题
    UIResponder响应链
    NSURLSession进行网络请求
    命令行工具打包
  • 原文地址:https://www.cnblogs.com/bozhou/p/6755988.html
Copyright © 2011-2022 走看看