gpt4 book ai didi

python - 如何使用 Python MonkeyPatch + Mock 来断言调用了一个函数

转载 作者:行者123 更新时间:2023-12-04 19:59:55 25 4
gpt4 key购买 nike

我有一个使用 MonkeyPatch 来测试某些功能的测试库。我想向这个库添加一个测试,以测试对我的端点的请求是否调用了 functionB()。
我使用 Mock() 库来创建模拟函数,然后我使用 MonkeyPatch.setattr() 传递它。但是,模拟函数永远不会被调用并且断言总是失败。我究竟做错了什么?

mock_function_B = Mock()
monkeypatch.setattr(file, 'function_B', mock_function_B)
params = json.dumps({'foo': "bar"})
res = client.post('/some_endpoint', headers=content_type_json, data=params)
assert res.status_code == 201
assert mock_function_B.call_count == 1
我希望 call_count 为 1,因为我知道 some_endpoint 调用 function_B(并且从日志中,我看到它已被调用)但是,断言失败,因为 call_count 为 0。

最佳答案

它可以通过不同的方式完成,例如,您可以模拟 function_B 并计算局部变量中的调用。

calls = []
monkeypatch.setattr(file, 'function_B', lambda a*, **k: calls.append('Called!'))
params = json.dumps({'foo': "bar"})
res = client.post('/some_endpoint', headers=content_type_json, data=params)
assert res.status_code == 201
assert len(calls) == 1

关于python - 如何使用 Python MonkeyPatch + Mock 来断言调用了一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57066546/

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