包装超过80个字符的python doctest结果

pel*_*son 38 python doctest pep8

我试图将我的源代码保持在PEP8建议的80字符指南宽度之下,但是无法弄清楚如何包装结果长于80个字符的doctest.

一个愚蠢的例子:

def long_string():
    """
    Returns a string which is wider than the recommended PEP8 linewidth

    >>> print long_string()
    0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789

    """
    return '0123456789' * 10
Run Code Online (Sandbox Code Playgroud)

我尝试了几种组合,包括使用# doctest: +NORMALIZE_WHITESPACE和尝试用换行符简单地换行.

pel*_*son 40

刚想通了:

def long_string():
    """
    Returns a string which is wider than the recommended PEP8 linewidth

    >>> print long_string()
    01234567890123456789012345678901234567890123456789012345678901234567890\
12345678901234567890123456789

    """
    return '0123456789' * 10
Run Code Online (Sandbox Code Playgroud)

希望能帮助别人.

  • 如果您不关心确切的结果,则在结果中使用省略号可能是另一种解决方案,例如,将"012345678901234567 ... 0123456789"写为预期结果. (8认同)
  • 一般来说,我通过改变我的期望来避免在doctests中出现这样的问题.`res = long_string(); print res [:60]`后跟前60个字符等. (5认同)
  • 需要通过添加[`#doctest:+ ELLIPSIS`指令](https:// docs)来启用[省略号](https://docs.python.org/2/library/doctest.html#doctest.ELLIPSIS). python.org/2/library/doctest.html#doctest-directives)到产生输出的代码行的末尾. (5认同)

Joe*_*ack 6

正如davitenioqris所建议的那样,我建议像这样使用#doctest: +ELLIPSIS指令

>>> from test.test_ppp import MockForm
>>> form = MockForm(mock_file='no-errors.xlsx')
>>> form.get_languages(settings_default='English', survey_header=
... form.metadata['raw_data']['survey'][0])  #doctest: +ELLIPSIS
['Ateso', 'English', 'Luganda', ... 'Runyoro-Rutoro']
Run Code Online (Sandbox Code Playgroud)