我正在使用TestCase为我的django app编写测试,并且希望能够将参数传递给父类的setUp方法,如下所示:
from django.test import TestCase
class ParentTestCase(TestCase):
def setUp(self, my_param):
super(ParentTestCase, self).setUp()
self.my_param = my_param
def test_something(self):
print('hello world!')
class ChildTestCase(ParentTestCase):
def setUp(self):
super(ChildTestCase, self).setUp(my_param='foobar')
def test_something(self):
super(ChildTestCase, self).test_something()
但是,我收到以下错误:
TypeError: setUp() takes exactly 2 arguments (1 given)
我知道这是因为只有self仍然通过,并且我需要覆盖到类__init__
才能使其工作。我是Python的新手,不知道如何实现它。任何帮助表示赞赏!
答案 0 :(得分:1)
测试运行器将仅使用self作为参数调用ParentTestCase.setup。因此,您将为此案例添加默认值,例如:
class ParentTestCase(TestCase):
def setUp(self, my_param=None):
if my_param is None:
# Do something different
else:
self.my_param = my_param
注意:注意不要将可变值用作默认值(有关详细信息,请参阅"Least Astonishment" and the Mutable Default Argument)。