- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 README.rst 文件,其中包含我的 Python 库的多个文档测试。它们都可以工作,除了最后一个 doctest,它打印
以 UTF-8 编码的 Unicode 输出:
Here is a failing example::
>>> print(u'\xE5\xE9\xEE\xF8\xFC')
åéîøü
(使用 print
而不仅仅是字符串对我的实际用例非常重要,因为真正的字符串包含嵌入的换行符,并且我需要展示不同行上的内容如何对齐.)
运行 pytest README.rst
在 Python 3.6.5 和 pytest 3.6.1 中可以成功运行,但在 Python 2.7.10 下,它会失败并出现很长的回溯,并以以下内容结尾:
input = 'åéîøü
', errors = 'strict'
def decode(input, errors='strict'):
> return codecs.utf_8_decode(input, errors, True)
E UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py:16: UnicodeEncodeError
在 tox.ini
中设置 setenv = LC_ALL=en_US.UTF-8
并在 tox 下运行不会改变任何内容;将 doctest_encoding = utf-8
添加到 tox.ini
的 [pytest]
部分也不会。我没有看到与我的困境相关的文档测试选项。如何让测试在 Python 2.7 下成功运行?
更新:导致此问题的错误已在 pytest 3.6.2 中修复。
最佳答案
是的,print
是罪魁祸首。该异常最有趣的部分是:
def getvalue(self):
result = _SpoofOut.getvalue(self)
if encoding:
result = result.decode(encoding)
local/lib/python2.7/site-packages/_pytest/doctest.py:509:
pytest
尝试解码 unicode,因此 Python 尝试先对其进行编码,但失败了。我认为这是 pytest 中的一个错误:它应该测试 result
是字节还是 unicode:
if encoding and isinstance(result, bytes):
result = result.decode(encoding)
请将其报告给 pytest 问题跟踪器。您可以测试该修复是否成功您可以发送拉取请求。
关于python - pytest 无法在 Python 2.7 下处理 README 中 doctest 中的 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50860112/
我正在使用 doctest ,并且喜欢我可以从定义它们的地方测试非导出函数的事实: module Foo (frobnicate) where -- | -- >>> randomInt = 42 -
我有一个简单的 function with a doctest ,当使用 Sphinx 的 make doctest 运行时,出现以下错误: File "scheemey.rst", line ?,
文档似乎不太清楚如何解决以下问题...... def test(): """ >>> import doctest >>> doctest.ELLIPSIS_MARKER =
我通常使用 code auto-formatter Black ,它训练我使用双引号。使用双引号已成为我的“肌肉内存”。 许多类的默认 repr 使用单引号从 Python 交互式输出中打印出来。我知
我需要对一个必须用装饰器包装的方法进行文档测试,该装饰器不将 @functools.wraps 或 functools.update_wrapper 应用于被包装的方法.在这种情况下,doctest
我很困惑为什么 doctest.testmod() 以奇怪的顺序调用测试函数 from doctest import testmod def test_forwrite(): '''
import doctest def create_grid(size): grid = [] for i in range(size): row = ['0']*size
这可能是一个愚蠢的问题。 我正在尝试使用 python doctest,并且尝试运行 this示例 结尾为 if __name__ == "__main__": import doctest
我正在创建一个程序宏,它从一些配置文件自动生成一个库(这是一个寄存器布局,但这对问题并不重要)。 我希望库自动生成伴随自动库的文档,并包含应与 cargo test 一起运行的文档测试。现在,我已经实
这个问题在这里已经有了答案: How do you handle the "could not parse code block as Rust code" rustdoc warning? (1
我正在为一个模块编写文档,该模块具有一些由 Cargo 功能标志控制的选项。我想始终显示此文档,以便 crate 的消费者知道它可用,但我只需要在启用该功能时运行该示例。 库.rs //! This
我的函数从文件中读取,需要以独立于绝对路径的方式编写 doctest。编写 doctest 的最佳方法是什么?编写临时文件的成本很高,而且不是万无一失的。 最佳答案 您可以有一个采用路径的参数,用下划
如果我需要在 doctest 中做一些事情怎么办: ''' >>> for i in range(5): print i ''' 我明白了 for i in range(5):
我正在尝试通过 iex 使用 doctest 测试 HashSet。如果我运行下面的行,它会给出相同的结果,但是 #HashSet}无法在语法中表示。我想不出一种正确表示它的方法,也找不到任何例子。谢
我已经进行了搜索,但找不到我想要的东西。 我的代码如下: import datetime import doctest import os def parseOptions(): import
我有一个函数可以使用 random 模块将用户输入变量与随机生成的数字进行比较。我想写一个 doctest,它将要求忽略或覆盖随机生成的数字。 在我无知的情况下,我试图给随机变量赋值,但仍然生成了一个
测试这样的代码的最佳方法是什么(下面的代码显然失败了,因为每次都在不同的 block 中创建对象): def get_session(db_name, verbose, test): """Retur
我已经编写了一个用于测试的assert_raised 上下文管理器,它检查是否按预期引发异常,如果没有引发AssertionError。我还写了一个 doctest 来测试这个,但是 doctest
我有一个 doctest,我在其中测试 float 转换: >>> float('fish') 在 Python >> float('fish') ValueError:... 你可以看到 Alex
假设我有以下代码: def foo(s): """A dummy function foo. For example: >>> a = '''This is a test string lin
我是一名优秀的程序员,十分优秀!