Была необходимость использовать bytes в doctest функции, а ради одного теста небольшой функции смысла писать юнит-тесты никакого (скрипт достаточно маленький и простенький).
Большой соблазн написать в doctest:
>>> foo(b'\xff\xd8\xff')
Но мы получим exception:
SyntaxError: bytes can only contain ASCII literal characters.
Само собой файл скрипта в UTF-8.
Но у этого есть простое решение: записать данные в виде HEX:
>>> foo(bytes.fromhex('ff d8 ff'))
Получим:
def foo(data):
"""
>>> foo(bytes.fromhex('ff d8 ff'))
"""
pass
Проверено для Python 3.5.
Для Python 2. советуют писать следующим образом (не проверял):
def foo(data):
ur"""
>>> foo(b'\xff\xd8\xff')
"""
pass
К сожалению нет решения одновременно для версий Python 2.* и 3.* .
Большой соблазн написать в doctest:
>>> foo(b'\xff\xd8\xff')
Но мы получим exception:
SyntaxError: bytes can only contain ASCII literal characters.
Само собой файл скрипта в UTF-8.
Но у этого есть простое решение: записать данные в виде HEX:
>>> foo(bytes.fromhex('ff d8 ff'))
Получим:
def foo(data):
"""
>>> foo(bytes.fromhex('ff d8 ff'))
"""
pass
Проверено для Python 3.5.
Для Python 2. советуют писать следующим образом (не проверял):
def foo(data):
ur"""
>>> foo(b'\xff\xd8\xff')
"""
pass
К сожалению нет решения одновременно для версий Python 2.* и 3.* .
Комментариев нет:
Отправить комментарий