是否可以根据我正在运行的测试来配置setUp方法以使用不同的参数? 在setUp方法中,我有一个类,我想用不同的参数实例化,这取决于我正在运行的测试。我理解通常这是测试方法的用途,但我需要在setUp之前实例化该类。
我有一个解决方案是创建另一个方法来完成我想要setUp做的所有事情然后在每次测试中调用它,但我想知道内置的setUp方法是否能够做到这一点?
我知道下面的示例不起作用,因为setUp不接受任何args,但我一直在寻找这些内容。
另外,什么是更好的替代方案?
示例:
class TestComponents(unittest.TestCase):
def __init__(self, *args, **kwargs):
self.app = MyApplication()
unittest.TestCase.__init__(self, *args, **kwargs)
def setUp(component):
self.app.start([component])
def testComponent1():
# test continues here
def testComponent2():
# test continues here
答案 0 :(得分:1)
为测试定义基类。 setUp
方法可以引用包含您要更改的参数的类属性。
class TestBase(unittest.TestCase):
def setUp(self):
# do something with self.MYPARAMETER
然后将测试划分为一组子类,每个子类以不同的方式定义MYPARAMETER
。您可能需要也可能不需要在本地定义setUp
,具体取决于代码本身是否需要扩展
你可以放在TestBase.setUp
。
class Test1(TestBase):
MYPARAMETER = 1
def setUp(self):
TestBase.setUp(self)
# etc
class Test2(TestBase):
MYPARAMETER = 17
def setUp(self):
TestBase.setUp(self)
# etc