簡體   English   中英

如何在Python中的單元測試設置階段實例化對象

[英]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通過。 我期望setuptearDown可以“重置”我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM