gpt4 book ai didi

python - unittest 属性在 Python 中是否可变?

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:12 25 4
gpt4 key购买 nike

假设我有这个集成测试

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 是不同的。

关于python - unittest 属性在 Python 中是否可变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12921279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com