2012-03-19 16 views
2

それぞれの関数の本体にPythonのdoctestを置くことができます。小さなライブラリの場合は、関数と同じファイルにあるためです。コードファイルの最後にpython doctestを入れますか?

私はそれらをすべて別々のファイルにまとめ、別々のファイルを実行することができます。これは、関数間にdoctestを入れたくない場合に便利です。時には、ドキュメンテーション文字列が小さくても、コードを簡単に処理できることがあります。

python doctestsを同じファイルに保存する方法もありますが、ファイルの最後にすべてのファイルをまとめますか?


EDIT:以下受け入れ答えをベースにしたソリューション、:実際には、それは簡単です

def hello_world(): 
    return u'Hello World' 


def hello(name): 
    return u'Hello %s' % name 


def doctest_container(): 
    """ 
    >>> hello_world() 
    u'Hello World' 

    >>> hello(u'Guido') 
    u'Hello Guido' 
    """ 
    pass 


if __name__ == "__main__": 
    import doctest 
    doctest.testmod() 

、ダミー関数は、1つのドキュメンテーション文字列内のすべてのdoctestが含まれている最後の関数として作成されます。

+0

'テスト() ':

あなたは非テストコードのドキュメンテーション文字列を汚染回避することが望ましいdoctestを持つモジュールの最後にテスト機能を追加することができます'、' test() 'の中でdoctest.testmod()を動かすことができます。私はそれに応じて答えを更新しました。 – jfs

答えて

1

doctestは、あなたのドキュメントの例では、実装と同期していることをテストすることです。

多くのテストがある場合。コードとして書かれた単体テストは、doctestベースのテストよりも保守が容易です。 doctest_container `より良い名前かもしれません)(

def test(): 
    """ 
    .. 
    """ 
    import doctest 
    doctest.testmod() 

if __name__=="__main__": 
    test() # if the module is called as a script then run tests 
2

あなたはそのようなファイルの末尾にドキュメンテーション文字列へのdoctestを追加することができます

def myfunc(): 
    """This is a docstring without a doctest 
    """ 
    pass 

# ... some other code here 

# Add docstrings for doctest: 
myfunc.__doc__ += """ 
>>> myfunc() 
>>> repr(myfunc()) 
None 
""" 
関連する問題