【问题标题】:How to skip Python 3.8.2 test of files encoding?如何跳过 Python 3.8.2 文件编码测试?
【发布时间】:2020-10-07 14:55:05
【问题描述】:

我遇到了以下错误。当并非所有文件都可utf-8 编码时,poetry run pytest -v 上的测试将失败。

================================================ =============== 错误 =================================== ============================== ____________________________________________ 错误收集测试/匿名/test.txt _________________________________________ .venv/lib/python3.8/site-packages/py/_path/common.py:171:在 read_text 返回 f.read() ../../../.pyenv/versions/3.8.2/lib/python3.8/codecs.py:322: 在解码 (结果,消耗)= self._buffer_decode(data,self.errors,final)E UnicodeDecodeError:'utf-8'编解码器无法解码字节0xf8 位置 380:无效的起始字节 ==================================================== ====简短的测试摘要信息=========================================== ============= 错误测试/匿名/test.txt - UnicodeDecodeError: 'utf-8' codec 无法解码位置 380 中的字节 0xf8:无效的起始字节 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!中断:1 个错误 收集期间!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

与此同时,完全相同的设置适用于 Python 3.7,如果我使用 poetry run pytest tests/my_tests.py 运行测试。

我正在使用:Python 3.8.2,诗歌 1.0.5

我该如何解决?这个错误很烦人,因为它在 CI 中失败了。

【问题讨论】:

  • 检查pytest,并删除相关测试。似乎(非常)旧的 UTF-8(U 作为通用,所以 UCS,它允许字符直到 7FFF FFF)和新的 UTF-8(U 作为 Unicode,只到 10 FFFF)之间存在一些不兼容,或者在异常类。您收到错误非常奇怪,所以它应该是一些“外部”依赖/测试,它不是最新的

标签: python utf-8 python-3.8


【解决方案1】:

当它出现时,该问题与poetrypython. 的任何版本无关。我将文件命名为test.txt 并将其放在tests/ 文件夹下。默认情况下,pytest 会查找所有以test 为前缀的文件并验证其编码。由于test.txtiso-8859-1 中,我遇到了与UTF-8 相关的问题。

注意:

确保在使用 pytest 时不要使用 test 前缀命名文件。请注意,如果您决定使用前缀命名它们,它们应该是 UTF-8 编码的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2011-11-04
    • 2012-02-28
    • 2018-06-15
    • 1970-01-01
    • 2011-09-12
    相关资源
    最近更新 更多