Python: 在 doctests 中接受 unicode 字符串作为常规字符串

Python: accept unicode strings as regular strings in doctests

通过在原始词典的键中搜索传递的关键字并返回新的缩写词典来为缩写词典的方法编写文档测试。我的文档字符串如下所示:

def abbreviate_dict(key_word, original_dict):
    """
    >>> orig_dict = {apple_stems: 2, apple_cores: 5, apple_seeds: 3}
    >>> abbreviate_dict('apple', orig_dict)
    {'cores': 5, 'seeds': 3, 'stems': 2}
    """
   etc.
   return new_dict

该函数有效,但是当我 运行 py.test 的 doctest 时,该函数未通过测试,因为它 returns 将字符串作为 unicode。我没有在我的函数中以编程方式将字符串切换为 unicode,但我知道 unicode 中的 python 2.7 returns。

Expected:
    {'cores': 5, 'seeds': 3, 'stems': 2}
Got:
    {u'cores': 5, u'seeds': 3, u'stems': 2}

如何让 doctest 确认 unicode 和常规字符串输出相同?

您可以设置 ALLOW_UNICODE 标志(全局或每个测试),有关详细信息,请参阅 pytest docs

示例:

[pytest]
doctest_optionflags = ALLOW_UNICODE

# content of example.rst
>>> get_unicode_greeting()  # doctest: +ALLOW_UNICODE
'Hello'