假设我有这个集成测试
class TestClass(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.key = '123'
def test_01_create_acc(self):
user = create_account(...)
self.key = user.key
def test_02_check_account(self):
user = check_account(..)
self.assertEqual(self.key, user.key)
看起来属性self.key
不可变。它与setUpClass
中的旧值保持一致。但是setUpClass
只调用一次?
帐户功能出于安全原因随机创建密钥,因此我不允许传入我的密钥。它返回密钥,因此我需要修改该属性。我可以吗?
看起来每个test_
案例都是孤立的。
my_gloabl = None
def setUpClass(cls):
cls.key = my_global
如果我在test1中更改my_global
,则test2将获得None
。
答案 0 :(得分:1)
该课程仅设置一次。但实际上每个测试方法都是从该测试的不同实例调用的。
您可以使用id
函数演示这一点,该函数将为每个对象返回不同的数字:
import unittest
class TestClass(unittest.TestCase):
@classmethod
def setUpClass(cls):
print "setup"
def test_01_create_acc(self):
print id(self)
def test_02_check_account(self):
print id(self)
unittest.main()
在我的电脑上,打印出来:
setup
4300479824
.4300479888
注意setup
方法只被调用一次,但是 test1和test2的实例的id是不同的。