Deo python支持setUp()和tearDown()的行为取决于上下文?无论如何,我问我是否可以这样做:
setUp() {
if(context1){
do A;
}
else{
do B;
}
}
tearDown() {
if(context1){
do A;
}
else{
do B;
}
}
答案 0 :(得分: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中执行一次。
答案 1 :(得分:1)
是的,就像你展示它一样:如果条件为真,则使用if块并仅执行设置的特定部分。
我认为您的目标是为不同的测试设置不同版本的setUp
和tearDown
。我实际上建议你:
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