gpt4 book ai didi

python-2.7 - 如何使 pytest 触发的 doctests 忽略字符串的 unicode 前缀 `u' .. .'`?

转载 作者:行者123 更新时间:2023-12-02 03:00:24 25 4
gpt4 key购买 nike

我希望我的代码在 Python 2 和 3 中工作。我使用 doctests 和

from __future__ import unicode_literals

是否有一个我可以设置的标志/一个插件可以忽略 Python 2 具有用于 unicode 字符串的 u 前缀?

例子

一个在 Python 3 中有效但在 Python 2 中失败的测试:

Expected:
'Me \\& you.'
Got:
u'Me \\& you.'

最小示例

from __future__ import unicode_literals


def foo():
"""

Returns
-------
unicode - for Python 2 and Python 3

Examples
--------
>>> foo()
'bar'
"""
return 'bar'


if __name__ == '__main__':
import doctest
doctest.testmod()

最佳答案

如果您直接使用 doctest,则可以按照 Dirkjan Ochtman 的博客文章 Single-source Python 2/3 doctests 覆盖 OutputChecker :

class Py23DocChecker(doctest.OutputChecker):
def check_output(self, want, got, optionflags):
if sys.version_info[0] > 2:
want = re.sub("u'(.*?)'", "'\\1'", want)
want = re.sub('u"(.*?)"', '"\\1"', want)
return doctest.OutputChecker.check_output(self, want, got, optionflags)

doctest.DocTestSuite(mod, checker=Py23DocChecker())

如果您使用的是 py.test,则可以在 pytest.ini 中指定 doctest_optionflags = ALLOW_UNICODE。参见 https://docs.pytest.org/en/latest/doctest.html

关于python-2.7 - 如何使 pytest 触发的 doctests 忽略字符串的 unicode 前缀 `u' .. .'`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46465422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com