2

假设我有这个集成测试

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

如果我my_global在 test1 中更改,test2 将得到None.

4

1 回答 1

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

Note how the setup method was called only once, but the id of the instance for test1 and test2 are different.

于 2012-10-16T18:44:03.970 回答