2011-08-05 7 views
18

Google検索では(正しいキーワードを使用している場合でも)しばらく私を助けてくれないため、Pythonのテストケースでの非テストメソッド

私はテストの一部として実行されないいくつかの補助的なメソッドを持っているTestCaseから拡張されたクラスを持っています、それらはいくつかの擬似オブジェクトなどを生成するために使用されます。任意のテスト。

unittestが特定のテストメソッドを実行しないように、@skipデコレータを使用できることがわかっていますが、それは私の目的のために使用する醜いハックだと思います。

ありがとうございます。コミュニティ:D

+4

単体テストは "test_"で始まるメソッドのテストのみを実行しますか? – daveydave400

答えて

32

私はあなたが何もする必要はないと信じています。あなたのヘルパーメソッドは、test_で始めるべきではありません。

+1

@piva:unittestのドキュメントはhttp://docs.python.org/library/unittest.htmlで、特に "TestLoaderはテストメソッドを自動的に識別するために 'test'メソッド名プレフィックスを使用します。 – daveydave400

+0

@ daveydave400私の質問はイェップですが、急いで私の目は文章の中を突き進んでいました – victorcampos

+0

/別々に、テストメソッドの前に 'test_'という接頭辞を付けるのを忘れてしまいました。テストランナーは走っていません。 –

1

テストランナーはtestで始まるメソッドしか直接実行しないため、ヘルパーメソッドの名前がtestで始まらないようにしてください。

2

unittestが実行する唯一の方法は、setUptestで始まるもの、tearDown [2]の順です。ヘルパーメソッドを作って3つのもの以外の何かを呼び出すことができ、unittestで実行されません。

__init__と考えることができます。複数のテストで使用されるモックオブジェクトを生成する場合は、setUpで作成してください。

def setUp(self): 
    self.mock_obj = MockObj() 

[1]:これは完全に真実ではありませんが、これらはあなたがテストを書くときに集中できる方法の主要3グループです。

[2]:従来の理由から、unittestはtest_footestFooの両方を実行しますが、最近はtest_fooが好ましいスタイルです。 setUptearDownはそのように表示されます。

関連する問題