Ale*_*mov 5 python mocking pytest pytest-mock
在下面显示的代码片段中,我想测试函数中的函数调用顺序run(),即,在调用之后f_3调用:f_2f_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()
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使用 来做到这一点吗pytest-mock?我尝试在测试文件中模拟f_1、f_2和函数并使用with ,但是没有成功。f_3assert_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,
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2178 次 |
| 最近记录: |