0

Deo pythonサポートsetUp()とtearDown()は、コンテキストに応じて異なる動作をしますか?どうしても、私はこのようなことをすることができるかどうかについて尋ねています:

setUp() {
    if(context1){
         do A;
    }
    else{
         do B;
    }
}


tearDown() {
    if(context1){
         do A;
    }
    else{
         do B;
    }
}
4

2 に答える 2

2

必要なテストのコンテキストごとに、2 つの異なるクラス (おそらくいくつかの共通の祖先を持つ) のテストを行うことを検討する必要があります。そのほうが簡単です。

このようなもの :

class BaseTest():
    def test_01a(self):
        pass

class Context1TestCase(BaseTest, unittest.TestCase):
    def setUp(self):
        # do what you need for context1

    def tearDown(self):
        # do what you need for context1

class Context2TestCase(BaseTest, unittest.TestCase):
    def setUp(self):
        # do what you need for context2

    def tearDown(self):
        # do what you need for context2

このように、test_01acontext1 で 1 回、context2 で 1 回実行されます。

于 2012-05-29T10:19:12.390 に答える
1

ええ、あなたが示したように: if ブロックを使用し、条件が真の場合にのみセットアップの特定の部分を実行します。

あなたが得ているのは、さまざまなバージョンのさまざまなテストsetUpを用意することだと思います。tearDown実際には、次のいずれかをお勧めします。

  • setUp適切な/tearDownメソッドを使用して、テストを異なる TestCase サブクラスに分割します
  • またはまったく使用しないsetUptearDownください-このようなことをしてください

    class MyTestCase:
        def _setup_for_foo_tests():
            # blah blah blah
        def _setup_for_bar_tests():
            # blah blah blah
        def test_foo_1():
            self._setup_for_foo_tests()
            # test code
        def test_foo_2():
            self._setup_for_foo_tests()
            # test code
        def test_bar_1():
            self._setup_for_bar_tests()
            # test code
        # etc etc etc
    
于 2012-05-29T10:20:23.500 に答える