ほとんどの場合、対話コンソールセッション上でのコピー/ペーストはうまく 動作します。とはいえ、 doctest は特定の Python シェルの振る舞い を正確にエミュレーションしようとするわけではありません。ハードタブは 全て 8 カラムのタブストップを使ってスペースに展開されます。従って、 タブがそのように表現されると考えておかないととまずいことになります: その場合は、ハードタブを使わないか、自前で DocTestParser クラスを書いてください。
バージョン 2.4 で 変更 された仕様: 新たにタブをスペースに展開するようになりました; 以前の バージョンはハードタブを保存しようとしていたので、混乱させるような テスト結果になってしまっていました
>>> # comments are ignored >>> x = 12 >>> x 12 >>> if x == 13: ... print "yes" ... else: ... print "no" ... print "NO" ... print "NO!!!" ... no NO NO!!! >>>
出力結果例 (expected output) は、コードを含む最後の
'>
or >
> ''... '
行の直下に続きます。
また、出力結果例 (がある場合) は、次の '>
行か、全て空白文字の行まで続きます。
>
> '
細かな注意:
<BLANKLINE>
を入れてください。
バージョン 2.4 で 変更 された仕様:
<BLANKLINE>
を追加しました; 以前のバージョンでは、
空白行の入った予想出力結果を扱う方法がありませんでした
>>> def f(x): ... r'''Backslashes in a raw docstring: m\n''' >>> print f.__doc__ Backslashes in a raw docstring: m\n
こうしなければ、バックスラッシュは文字列の一部として解釈されてしまいますう。 例えば、上の例の "\" は改行文字として認識されてしまうでしょう。 こうする代わりに、(raw docstring を使わずに) doctest 版の中では バックスラッシュを全て二重にしてもかまいません:
>>> def f(x): ... '''Backslashes in a raw docstring: m\\n''' >>> print f.__doc__ Backslashes in a raw docstring: m\n
>>> assert "Easy!" >>> import math >>> math.floor(1.9) 1.0
'>>
> '
行の先頭にある空白文字列と同じだけはぎとられます。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。