Как включить новую строку в переменной doctest? - PullRequest
0 голосов
/ 24 сентября 2019

Я хотел бы разбить текст, который вводит для doctest в новые строки.Вот минимальный пример:

import doctest

def example1():
    """
    >>> txt = '\\n'.join(['abcd', 'efg'])
    """

    return '\\n'.join(['abcd', 'efg'])


def example2():
    """
    >>> txt = '\\n'.join(['abcd',
    'efg'])
    """

    return '\\n'.join(['abcd',
    'efg'])

doctest.testmod()

Результат:

File "example.py", line 16, in __main__.example2
Failed example:
    txt = '\n'.join(['abcd',
Exception raised:
    Traceback (most recent call last):
      File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/doctest.py", line 1329, in __run
        compileflags, 1), test.globs)
      File "<doctest __main__.example2[0]>", line 1
        txt = '\n'.join(['abcd',
                               ^
    SyntaxError: unexpected EOF while parsing

Синтаксис для новых строк внутри массива работает в теле функции, но не в doc-тесте,Как я могу расположить длинные строки в doc-тестах в новые строки?

1 Ответ

2 голосов
/ 25 сентября 2019

Doc-тесты требуют явного экранирования новой строки.Поэтому добавьте обратную косую черту:

"""
>>> txt = '\\n'.join(['abcd', \
'efg'])
"""
...