Deo python 支持 setUp() 和 tearDown() 的行为取决于上下文?无论如何,我在问我是否可以做这样的事情:
setUp() {
if(context1){
do A;
}
else{
do B;
}
}
tearDown() {
if(context1){
do A;
}
else{
do B;
}
}
Deo python 支持 setUp() 和 tearDown() 的行为取决于上下文?无论如何,我在问我是否可以做这样的事情:
setUp() {
if(context1){
do A;
}
else{
do B;
}
}
tearDown() {
if(context1){
do A;
}
else{
do B;
}
}
您应该考虑为您需要的每个测试上下文进行 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 中执行一次。
是的,就像您展示的那样:使用 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