Держите строки внутри строк документации в пределах 79 символов

Я пишу несколько доктестов в своем модуле.

Соответствующий код

def foo():
    """
    Populates the database with 'VALUES'

    >>> import sqlite3
    >>> con = sqlite3.connect('test.db')
    >>> cur = con.cursor()
    >>> cur.execute('select * from users').fetchall()
    [('admin', 'Admin', 1, 'admin123'), \
    ('foo', 'bar', 2, 'foo123'), \
    ('john', 'doe', 3, 'john123')]
    >>> 

    """

    try:
        con = sqlite3.connect('test.db')
        cursor = con.cursor()
        cursor.executemany("INSERT INTO users VALUES (?, ?, ?, ?)", VALUES)
        connection.commit()
        connection.close()
    except sqlite3.OperationalError as msg:
        return msg

Проблема, с которой я столкнулся

$ python -m doctest test_db.py
Failed example:
    cur.execute('select * from users').fetchall()
Expected:
    [('admin', 'Admin', 1, 'admin123'),     ('foo', 'bar', 2, 'foo123'),     ('john', 'doe', 3, 'john123')]
Got:
    [('admin', 'Admin', 1, 'admin123'), ('foo', 'bar', 2, 'foo123'), ('john', 'doe', 3, 'john123')]
**********************************************************************

Ссылки

Я просмотрел их, но не смог найти ничего подходящего


person Tasdik Rahman    schedule 19.03.2016    source источник


Ответы (1)


Попробуйте удалить лишние пробелы.

def foo():
    """
    Populates the database with 'VALUES'

    >>> import sqlite3
    >>> con = sqlite3.connect('test.db')
    >>> cur = con.cursor()
    >>> cur.execute('select * from users').fetchall()
    [('admin', 'Admin', 1, 'admin123'), \
('foo', 'bar', 2, 'foo123'), \
('john', 'doe', 3, 'john123')]
    >>> 

    """
person Tyler Crompton    schedule 19.03.2016
comment
Стандартная интерпретация строк документации состоит в том, чтобы таким образом игнорировать начальные пробелы. Я довольно удивлен, что doctest этого не делает. - person Kevin; 19.03.2016
comment
Согласен, но разве нет ничего приятного для глаз? - person Tasdik Rahman; 19.03.2016
comment
Проблема в том, что OP использует символ продолжения строки в строке. Следовательно, они не считаются новыми строками и, следовательно, не подпадают под действие правила игнорирования пробелов. - person Tyler Crompton; 22.03.2016