7

doctest をモジュールに統合し始めました。(やったー!) これらはスクリプトとして開始されたファイルである傾向があり、現在は CLI アプリを使用するいくつかの関数になっている__name__=='__main__'ため、テストの実行をそこに置きたくありません。試してみnosetests --with-doctestましたが、見たくない多くの失敗が発生しました。これは、テストの検出中に、doctests を含まないが、このシステムにインストールしていないものをインポートする必要があるか、特別な環境で実行する必要があるインポート モジュールであるためです。 python のインストール。すべての doctest だけを実行する方法はありますか?

「import doctest; doctest.testfile(currentFilename)」を実行して現在のモジュールで doctests を実行するための vim のホットキーと、すべてのテストを実行する別のスクリプトを検討しました。他の doctest ユーザーは何をしますか? または、doctest 以外のものを使用する必要がありますか?

4

2 に答える 2

6

必要な doctests モジュールをラップする単体テストを作成することもできます。これは doctests のネイティブ機能です: http://docs.python.org/2/library/doctest.html#unittest-api

import unittest
import doctest 
import my_module_with_doctests

def load_tests(loader, tests, ignore):
    tests.addTests(doctest.DocTestSuite(my_module_with_doctests))
    return tests
于 2013-07-25T20:53:25.753 に答える
3

私はが道だと思います。問題のあるモジュールを明示的に除外するか、次の-eような構成を使用してコード内の不足しているインポートをキャッチする必要があります。

try:
    import simplejson as json
except ImportError:
    import json

アップデート:

もう 1 つのオプションは、欠落しているモジュールの模擬代替品を提供することです。コードに次のようなものがあるとします。

import myfunkymodule

myfunkymoduleが見つからないシステムでテストを実行しようとしています。mock_modules/myfunkymodule.pyそこから必要なもののモック実装を含むファイルを作成できます(おそらくMiniMockを使用します。 doctestを使用している場合は、これを強くお勧めします)。nose次に、次のように実行できます。

$ PYTHONPATH=path_to/mock_modules nosetests --with-doctest
于 2010-09-06T19:00:53.383 に答える