在调用mock时检查dict是否有条目

2024-10-02 08:29:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我的一个班级需要做这样的事情:

class A:
    def __init__(self, someDict, someOtherObject):
        self._someDict = someDict
        self._someOtherObject = someOtherObject

    def func(self):
       self._someDict["key"] = None
       self._someOtherObject.foo()

现在,我想检查传递的字典中是否存在"key",此时调用了foo

class Test( unittest.TestCase ):
    def test_funcShouldAddKeyToDictionaryBeforeCallingFoo(self):
        objectMock = Mock()
        someDict = {}
        aUnderTest = A(someDict, objectMock)

        aUnderTest.func()

        # assert "key" in someDict when called objectMock.foo()

如何在调用foo之前检查字典是否已经有条目


Tags: keyselfnone字典fooinitdef事情
1条回答
网友
1楼 · 发布于 2024-10-02 08:29:28

您可以使用自己的函数替换foo,该函数执行以下检查:

class Test(unittest.TestCase):
    def test_funcShouldAddKeyToDictionaryBeforeCallingFoo(self):
        def check_dict():
            self.assertIn("key", someDict)

        objectMock = Mock()
        someDict = {}
        aUnderTest = A(someDict, objectMock)
        objectMock.foo = check_dict  # "check_dict" will be called instead of "foo"
        aUnderTest.func()

通过这种方式,您的检查在测试代码中调用foo时完成,如果需要的话

相关问题 更多 >

    热门问题