我第一次使用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
答案 0 :(得分:1)
这是因为每次调用测试用例时都会调用setUp
。如果只想调用一次,则必须将setUpClass
与@classmethod
装饰器一起使用,如下所示:
class SampleTest(TestCase):
@classmethod
def setUpClass(self):
# your code
答案 1 :(得分:0)
是的,你的假设是错误的。测试用例内的每个测试都应该是独立的;所以setUp
(和tearDown
)会为每个人调用一次。
如果您确实需要为整个班级只做一次,请使用setUpClass
;但请注意,您不应该在那里设置数据。