微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在调用模拟时检查dict是否有条目

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

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

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

现在,我想检查当前被传递给foo的字典中是否存在"key"

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之前检查字典中是否已有条目?

解决方法

您可以将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时执行检查。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。