gpt4 book ai didi

Python mock - 检查是否在模拟对象中调用了方法

转载 作者:行者123 更新时间:2023-12-05 02:05:41 26 4
gpt4 key购买 nike

我有一段代码看起来像这样:

# file1.py
from module import Object

def method():
o = Object("param1")
o.do_something("param2")

我有这样的单元测试:

@patch("file1.Object")
class TestFile(unittest.TestCase):
def test_call(self, obj):
...

我可以在单元测试中执行 obj.assert_called_with() 来验证是否使用某些参数调用了构造函数。是否可以验证是否使用某些参数调用了 obj.do_something?我的直觉是否定的,因为 Mock 完全封装在 Object 中,但我希望可能有其他方式。

最佳答案

你可以这样做,因为参数被传递给模拟对象。
这应该有效:

@patch("file1.Object")
class TestFile:
def test_call(self, obj):
method()
obj.assert_called_once_with("param1")
obj.return_value.do_something.assert_called_once_with("param2")

obj.return_valueObject 实例(它是具有 Object 规范的 MagickMock 对象), do_something 是该对象中使用给定参数调用的另一个模拟。

只要您只是将参数传递给模拟对象,模拟对象就会记录下来,您可以检查它。您没有的是实际函数调用的任何副作用 - 因此如果原始 do_something 会调用另一个函数,则无法检查。

关于Python mock - 检查是否在模拟对象中调用了方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63290336/

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