2015-11-07 6 views
5

nose発見プロセスでは、名前がtestで始まり、その中にtestという名前のすべての関数があり、それらを単体テストとして実行しようとします。 http://nose.readthedocs.org/en/latest/man.html名前に 'test'という名前の関数を無視するようにする

ファイル名がaccounts.pymake_test_accountという名前の関数があります。私はtest_accountと呼ばれるテストモジュールでその機能をテストしたいと思います。だから、私は、そのファイルの先頭に:

from foo.accounts import make_test_account 

しかし、今、私は鼻がユニットテストと機能make_test_accountを扱い、それを実行しようとします(それは任意のパラメータを渡していないため失敗し、そのことを見つけます必要です)。

ノーズがその機能を特に無視するようにするにはどうすればよいですか?コマンドライン引数なしでnosetestsというように鼻を呼び出すことができます。

答えて

4

ノーズにはnottestデコレータがあります。ただし、インポートするモジュールに@nottestデコレータを適用しない場合は、インポート後にメソッドを変更することもできます。ユニットテストロジックをユニットテスト自体の近くに保つことがよりクリーンかもしれません。この追加情報について

from nose.tools import nottest 
from foo.accounts import make_test_account 
# prevent nose test from running this imported method 
make_test_account = nottest(make_test_account) 
+0

ありがとう:あなたはまだnottestを使用することができますが、それは同じ効果があり

from foo.accounts import make_test_account # prevent nose test from running this imported method make_test_account.__test__ = False 

! – jwg

+1

これは、dm295の受け入れられた答えよりも、より洗練された方法であるように見えます。なぜなら、実稼働コードに追加されるテスト固有の(さらに重要なのは** **フレームワーク固有の**テストコード)を課すものではないからです。この返答をありがとう! – dsoosh

+0

これは、鼻の依存性を導入せずにテストランナーを越えて動作するため、より良いと思われます。 – weberc2

5

機能がテストではないことを通知します - nottestデコレータを使用してください。

# module foo.accounts 

from nose.tools import nottest 

@nottest 
def make_test_account(): 
    ... 
関連する問題