将额外参数传递给TestCase Setup

时间:2014-09-30 02:30:12

标签: python django django-unittest

我正在使用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的新手,不知道如何实现它。任何帮助表示赞赏!

1 个答案:

答案 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)。