在django TestCase中多次调用setUp函数

时间:2017-05-06 08:52:54

标签: django django-testing

我第一次使用django单元测试。以下是我的代码的缩小版本。

我的假设是每个TestCase类都会调用一次setUp函数。但是当我运行python manage.py test命令时,每个测试函数都会调用一次setUp函数。

我做错了什么或者我的假设有什么不对吗?

class SampleTest(TestCase):
    """
        This class assumes an archiver setup with
            add available at localhost:9101
            query available at localhost:9105
    """

    def __init__(self, *args, **kwargs):
        self.init_var = False
        super(SampleTest, self).__init__(*args, **kwargs)

    def setUp(self):
        """"""
        print "setup called"
        self.init_var = True


    def test_1(self):
        print "Test 1", self.init_var

    def test_2(self):
        print "Test 2", self.init_var

2 个答案:

答案 0 :(得分:1)

这是因为每次调用测试用例时都会调用setUp。如果只想调用一次,则必须将setUpClass@classmethod装饰器一起使用,如下所示:

class SampleTest(TestCase):

    @classmethod
    def setUpClass(self):
        # your code

答案 1 :(得分:0)

是的,你的假设是错误的。测试用例内的每个测试都应该是独立的;所以setUp(和tearDown)会为每个人调用一次。

如果您确实需要为整个班级只做一次,请使用setUpClass;但请注意,您不应该在那里设置数据。