Python/Doctest - документирование сложных строк

Я студент, работающий над заданием, где я должен документировать все внутренние функции. Мои функции используют сложные строки и также возвращают сложные строки, поэтому я понятия не имею, как это сделать. Например, моя функция "ProcessImports()" может принимать строку:

%@import
blahblah
%@

И вернуться:

\begin{shadedquoteBlueBar}
\fontsize{9pt}{9pt}
\begin{Verbatim}
blahblah}
\end{Verbatim}
\end{shadedquoteBlueBar}
\noindent

Как бы я обойти это? Я не видел примеров использования doctest, которые не возвращают классы / структуры или числа или другие простые представления (например, "\n" не работает).

Вот функция ProcessImports (): http://pastebin.com/3JjnyKjK

Любая помощь будет оценена!

Изменить: может хотеть проигнорировать попытку doctest наверху. Это просто я пытаюсь бездельничать, чтобы выяснить, смогу ли я заставить это работать, и терпеть неудачи в этом.

1 ответ

Решение

В следующем примере показан один успешный подход; имейте в виду, что doctest просто должен выглядеть как сеанс переводчика:

from textwrap import dedent

def function(s):
    """Testing doctests.

    >>> print function('''%@import
    ... blahblah
    ... %@''')
    <BLANKLINE>
    \\begin{shadedquoteBlueBar}
    \\fontsize{9pt}{9pt}
    \\begin{Verbatim}
    blahblah}
    \\end{Verbatim}
    \\end{shadedquoteBlueBar}
    \\noindent

    """
    s = dedent(r"""
               \begin{shadedquoteBlueBar}
               \fontsize{9pt}{9pt}
               \begin{Verbatim}
               blahblah}
               \end{Verbatim}
               \end{shadedquoteBlueBar}
               \noindent""")
    return s

Обратите внимание на продолжение символов ... на входе в функцию внутри строки документации.

Другие вопросы по тегам