24

doctestモジュールを使用してPythonでテストを開始しようとしています。現時点では

  1. 関数のテストを記述します。
  2. 関数コードを実装します。
  3. テストに合格したら、さらにテストとコードを記述します。
  4. 関数が完了したら、実装する次の関数に進みます。

したがって、多くのテストを行った同じモジュールで3つまたは4つの(独立した)関数を実行した後、doctestによって大量の出力が得られます。そして、それは少し厄介です。

doctestに「関数テストしないでください」と言って、a()b()c()マークされていない関数のみを実行するようにする方法はありますか?

私は旗を見つけただけでdoctest.SKIP、それは私のニーズには十分ではありません。このフラグをたくさんの行に配置する必要があります。また、マークされた関数をもう一度確認したい場合は、コードを手動で調べて、内部に設定したフラグをすべて削除する必要があります。

4

2 に答える 2

33

関数をに渡すことができるようrun_docstring_examplesです:

def f(a, b, c):
    '''
    >>> f(1,2,3)
    42
    '''

if __name__ == '__main__':
    import doctest
#    doctest.testmod()
    doctest.run_docstring_examples(f, globals())

グーグル経由で見つかった例。

于 2012-04-10T00:12:23.687 に答える
0

これを少し苦痛から解放するために、ヘルパースクリプトをまとめました。以下を使用してインストールできます。

pip install doctestfn

その後、次のように呼び出すことができます。

doctestfn {module or filename} {function to test}
于 2021-09-30T15:01:49.870 に答える