[英]How to instantiate objects during a unit test's setup phase in Python
我一直在研究使用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
失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.