我一直在使用 Python 进行单元测试,但无法弄清楚我应该如何在设置阶段实例化我想要测试的对象,并最终为每个测试生成一个新对象。 例如,我有以下要测试的类:
class Cfg():
data = {}
def set(self, key, value):
self.data[key] = value
def get(self, key):
return self.data.get(key, None)
对于每个单元测试,我想要一个新实例化的 Cfg
对象。我的测试看起来像这样:
from cfg import Cfg
class TestCfg():
def setup(self):
self.cfg = Cfg()
def teardown(self):
self.cfg = None
def test_a(self):
self.cfg.set('foo', 'bar')
assert self.cfg.get('foo') == 'bar'
def test_b(self):
assert self.cfg.get('foo') == 'bar'
我不明白为什么 test_b
通过了。我期望 setup
和 tearDown
来“重置”我的 cfg
实例,但似乎 cfg
在测试之间持续存在.我在这里做错了什么以及如何实现预期的行为?
最佳答案
这与您编写Cfg
类的方式有关。将 data
初始化移动到 __init__
方法中:
class Cfg():
def __init__(self):
self.data = {}
def set(self, key, value):
self.data[key] = value
def get(self, key):
return self.data.get(key, None)
而且,您会看到失败的 test_b
。
关于python - 如何在 Python 的单元测试设置阶段实例化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18187890/