1. ホーム
  2. python

[解決済み] 複数のテストに対するUnittestのsetUp/tearDown

2022-05-10 18:48:06

質問

テストのシナリオの最初と最後に実行される関数はありますか?setUpとtearDownの関数は、すべてのテストの前と後に実行されます。

一般的にはこれが欲しいところです。

class TestSequenceFunctions(unittest.TestCase):

    def setUpScenario(self):
        start() #launched at the beginning, once

    def test_choice(self):
        element = random.choice(self.seq)
        self.assertTrue(element in self.seq)

    def test_sample(self):
        with self.assertRaises(ValueError):
            random.sample(self.seq, 20)
        for element in random.sample(self.seq, 5):
            self.assertTrue(element in self.seq)

    def tearDownScenario(self):
        end() #launched at the end, once

今のところ、これらのsetUpとtearDownはユニットテストであり、私のすべてのシナリオ(多くのテストを含む)において、1つは最初のテスト、もう1つは最後のテストとして広がっています。

解決方法は?

2.7時点(per ドキュメント を取得します。 setUpClasstearDownClass で、与えられたクラスのテストが実行される前と後にそれぞれ実行されます。 別の方法として、もしひとつのファイルにまとめてある場合は setUpModuletearDownModule ( ドキュメント ).

そうでなければ、おそらく最良の方法は、独自の派生物を作成することでしょう。 テストスイート をオーバーライドし run() . 他のすべての呼び出しは親が処理し、run はセットアップとティアダウンのコードを、 親の run メソッドを使用します。