Python 3.x 在pytest中模拟和验证类方法中的参数
我正在尝试在我的pytest中使用pytest mock 如何在同一测试中模拟对象方法并验证此对象方法的参数 在我的示例中,我想模拟类引擎中的“test_function”方法。我想检查“test_function”方法是否使用预期参数调用过一次 我目前使用monkeypatch和mocker.patch.object的方法很复杂,无法工作。mocker.patch.object处于活动状态时,不会调用mock_函数Python 3.x 在pytest中模拟和验证类方法中的参数,python-3.x,pytest,pytest-mock,Python 3.x,Pytest,Pytest Mock,我正在尝试在我的pytest中使用pytest mock 如何在同一测试中模拟对象方法并验证此对象方法的参数 在我的示例中,我想模拟类引擎中的“test_function”方法。我想检查“test_function”方法是否使用预期参数调用过一次 我目前使用monkeypatch和mocker.patch.object的方法很复杂,无法工作。mocker.patch.object处于活动状态时,不会调用mock_函数 def test(monkeypatch, mocker): def mo
def test(monkeypatch, mocker):
def mock_function(*args, **kwargs):
pass
monkeypatch.setattr(Engine, "test_function", mock_function)
mock_object = mocker.patch.object(Engine, "test_function")
service = Service(Engine())
service.call_test_function("param", "param1", [["value"]])
mock_object.assert_called_once_with("param", "param1", [["value"]])
此外,是否也可以使用类对象测试“assert_called_one_with”补丁方法已经确保不调用实际方法。monkeypatch函数是不需要的。你能再多说一点上下文吗?你为什么要修补你应该测试的东西?该方法有一些硬件依赖性,而不是在每个应该运行测试的系统上都可用。我不明白你为什么需要
monkeypatch
和mock_函数
-应足以修补该功能。除此之外,它看起来还可以-也许你没有修补正确的对象。您必须说明如何以及在何处定义和导入引擎
和服务
,以便我们能够理解问题。我只希望在测试中不要调用引擎对象的方法“test_function”,并检查其参数。这已经通过修补方法实现了吗?是的。正如我所写的,您的问题可能是您没有修补正确的对象(检查)。