Python: принимать строки юникода как обычные строки в документах

Написание тестов для метода, который сокращает словарь путем поиска переданного ключевого слова в ключах исходного словаря и возврата нового сокращенного словаря. Моя документация выглядит следующим образом:

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, функция не проходит тест, поскольку возвращает строки в формате Unicode. Я не программно переключаю строки в юникод в моей функции, но я знаю, что python 2.7 возвращается в юникоде.

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

Как я могу получить doctest, чтобы подтвердить, что Unicode и обычные строки выводятся одинаково?

1 ответ

Решение

Вы можете установить ALLOW_UNICODE флаг (либо глобально, либо для каждого теста), подробности смотрите в документации по pytest.

Пример:

[pytest]
doctest_optionflags = ALLOW_UNICODE

или же

# content of example.rst
>>> get_unicode_greeting()  # doctest: +ALLOW_UNICODE
'Hello'
Другие вопросы по тегам