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_01a将在 context1 中执行一次,在 context2 中执行一次。

于 2012-05-29T10:19:12.390 回答
1

是的,就像您展示的那样:使用 if 块,并且仅在条件为真时才执行设置的特定部分。

我认为你得到的是有不同的版本setUptearDown不同的测试。我实际上建议您:

  • setUp使用正确的/tearDown方法将测试拆分为不同的 TestCase 子类
  • setUp或者根本不使用tearDown- 做这样的事情

    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 回答