Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django测试用例中多次调用的setUp函数_Django_Django Testing - Fatal编程技术网

django测试用例中多次调用的setUp函数

django测试用例中多次调用的setUp函数,django,django-testing,Django,Django Testing,我第一次使用django单元测试。下面是我的代码的缩小版本 我的假设是每个TestCase类调用一次setUp函数。但是,当我运行python manage.py test命令时,每个测试函数都会调用一次setUp函数 我是做错了什么,还是我的假设有错 class SampleTest(TestCase): """ This class assumes an archiver setup with add available at localhos

我第一次使用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

是的,你的假设是错误的。测试用例中的每个测试都应该是独立的;因此,
setUp
(和
tearDown
)会为它们中的每一个调用一次


如果您确实需要在整个课程中只完成一次,请使用
setUpClass
;但是请注意,您不应该在那里进行设置数据之类的操作。

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

class SampleTest(TestCase):

    @classmethod
    def setUpClass(self):
        # your code

我应该如何处理必须测试代码的多个逻辑点的用例,这些逻辑点对数据库进行了一些添加/删除。我不仅在设置功能中设置数据。我必须测试的逻辑会对数据库进行更改,我必须测试是否在数据库中创建了各种预期对象。对不起,我不理解你的问题。这是如何阻止你在每次测试中都这么做的?