Я борюсь с проектом, пытаясь сохранить один и тот же код с Python2.6, Python 2.7 и Python 3.x.
В этом проекте для хранения не-юникодные значения в типе str.
Мне нужно протестировать функцию foo, возвращающую тип str (а не тип unicode); возвращаемое значение заполняется символами, отличными от ascii.
Все, что я хочу, это проверить значение, возвращаемое этой функцией, на моей собственной строке, например:
from __future__ import unicode_literals # so that "àbcéfg" will be read u"àbcéfg"
bool_test = (foo() == "àbcéfg")
Я застрял, так как «àbcéfg» будет рассматриваться в Python2 как строка unicode, а в Python3 — как строка str.
Например, с Python2 этот код вызывает следующую ошибку:
При сравнении эквивалентности Unicode не удалось преобразовать оба аргумента в Unicode, интерпретируя их как неравные
Есть ли уникальный способ добиться сравнения, общего для Python2 и Python3?
Я попробовал несколько решений (например, преобразование str в байты), но безуспешно.
Любая идея, чтобы помочь мне?