gpt4 book ai didi

Python - 如何断言未使用特定参数调用模拟对象?

转载 作者:太空狗 更新时间:2023-10-30 02:07:06 27 4
gpt4 key购买 nike

我意识到 unittest.mock 对象现在有一个可用的 assert_not_called 方法,但我正在寻找的是一个 assert_not_called_with。有没有这样的东西?我查看了 Google,但没有看到任何东西,当我尝试仅使用 mock_function.assert_not_called_with(...) 时,它引发了一个 AttributeError,这意味着该函数不存在用那个名字。

我目前的解决方案

with self.assertRaises(AssertionError):
mock_function.assert_called_with(arguments_I_want_to_test)

这行得通,但如果我想进行多个这样的调用,就会使代码困惑。

相关

Assert a function/method was not called using Mock

最佳答案

你可以自己添加一个assert_not_called_with方法到unittest.mock.Mock:

from unittest.mock import Mock

def assert_not_called_with(self, *args, **kwargs):
try:
self.assert_called_with(*args, **kwargs)
except AssertionError:
return
raise AssertionError('Expected %s to not have been called.' % self._format_mock_call_signature(args, kwargs))

Mock.assert_not_called_with = assert_not_called_with

这样:

m = Mock()
m.assert_not_called_with(1, 2, a=3)
m(3, 4, b=5)
m.assert_not_called_with(3, 4, b=5)

输出:

AssertionError: Expected mock(3, 4, b=5) to not have been called.

关于Python - 如何断言未使用特定参数调用模拟对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54838354/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com