Search code examples
pythondoctest

Python doctest with newline characters: inconsistent leading whitespace error


When writing python doctests, how does one properly introduce newline characters within a string in the test? Here's a simple example:

def remove_newlines(text):
    """
    >>> remove_newlines("line1 \n"
    ...                 "still line 1\r"
    ...                 "now line2 \n"
    ...                 "more line2\n")
    line1 still line1
    now line2 more line2
    """
    return text.replace('\n', '')

import doctest
doctest.run_docstring_examples(remove_newlines, globals())

The output of which is:

Traceback (most recent call last):
...
ValueError: line 3 of the docstring for NoName has inconsistent leading whitespace: '"'

Solution

  • You need to escape the backslash.

    The docstring is itself a string where \n means newline. In

    def foo():
        """
        print "Hello world\n";
        """
        pass
    

    the docstring doesn't contain a valid Python statement but contains instead a newline inside the quoted string