7

nosetests -sのために実行

class TestTemp():

    def __init__(self):
        print '__init__'
        self.even = 0

    def setup(self):
        print '__setup__'
        self.odd = 1

    def test_even(self):
        print 'test_even'
        even_number = 10
        assert even_number % 2 == self.even

    def test_odd(self):
        print 'test_odd'
        odd_number = 11
        assert odd_number % 2 == self.odd

以下を印刷します。

__init__
__init__
__setup__
test_even
.__setup__
test_odd
.

テストインスタンスはテストが実行される前に作成され、セットアップはテストの直前に実行されます。

一般的なケースでは、setup()は同じことを実行しますが、setup()の代わりに__init__()使用することの欠点はありますか?__init__()または両方を使用しますか?

4

2 に答える 2

2

はい、テスト用に白紙の状態を作成し、個々のテストを分離しておく必要があります。

テスト インスタンス (テストごとに 1 つ) は 1 つのバッチで作成され、setup各テストの直前に呼び出されます。セットアップで外部状態をリセットする必要がある場合は、 でこれを行う必要がありますsetup。個々のテストでこれを行う__init__と、残りのテスト実行でその外部状態が台無しになる可能性があります。

于 2013-01-11T21:19:03.683 に答える
2

__init__の代わりとして機能する可能性がありますが、テストを記述するための定型化されたプロトコルの一部であるため、setUp固執する必要があります。setUpまた、そうでない対応する とtearDown、そうで__init__ないクラスレベルおよびモジュールレベルの対応もあり__init__ます。

テスト クラスの記述は、通常のクラスの記述とは異なるため、テスト クラスの記述に使用されるスタイルに固執する必要があります。

于 2013-01-12T12:56:45.663 に答える