假设我有这个集成测试
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 不是只调用了一次吗?
出于安全原因,帐户功能会随机创建一个 key ,因此不允许我传入我的 key 。它返回 key ,因此我需要修改该属性。可以吗?
看起来每个 test_ 案例都是孤立的。
my_gloabl = None
def setUpClass(cls):
cls.key = my_global
如果我在 test1 中更改 my_global,test2 将得到 None。
请您参考如下方法:
类只设置一次。但是每个测试方法实际上是从该测试的不同实例调用的。
您可以使用 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 是不同的。
