调用 mock 时检查 dict 是否有条目
Check if dict has entry when mock is called
我的一个 类 需要做这样的事情:
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 之前是否已经有条目?
您可以将 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
会根据需要在测试代码中调用时完成。
我的一个 类 需要做这样的事情:
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 之前是否已经有条目?
您可以将 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
会根据需要在测试代码中调用时完成。