gpt4 book ai didi

python - 使用 pytest-mock 检查调用顺序

转载 作者:行者123 更新时间:2023-12-04 15:19:37 27 4
gpt4 key购买 nike

在下面显示的代码片段中,我想测试 run() 中的函数调用顺序。函数,即 f_3f_2 之后调用在 f_1 之后调用:

class TestMock:

def f_1(self) -> None:
pass

def f_2(self) -> None:
pass

def f_3(self) -> None:
pass

def run(self) -> None:
self.f_1()
self.f_2()
self.f_3()
有什么办法可以使用 pytest-mock 做到这一点吗? ?我试图 mock f_1 , f_2 , 和 f_3在我的测试文件中使用函数并使用 assert_has_callsany_order=False ,然而,没有成功。
在此先感谢您的任何帮助或提示!
最好的事物,
阿列克谢

最佳答案

你在那里走对了 any_order=False ,您只需要了解 attach_mock 特征:

import yourmodule

def test_something(mocker):
mock = mocker.MagicMock()
mock.attach_mock(mocker.patch("yourmodule.TestMock.f_1"), "f_1")
mock.attach_mock(mocker.patch("yourmodule.TestMock.f_2"), "f_2")
mock.attach_mock(mocker.patch("yourmodule.TestMock.f_3"), "f_3")
yourinstance = yourmodule.TestMock()
yourinstance.run()
mock.assert_has_calls(
[
mocker.call.f_1(),
mocker.call.f_2(),
mocker.call.f_3(),
],
any_order=False,
)

关于python - 使用 pytest-mock 检查调用顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63614459/

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