-1

我正在尝试在我的 pytests 中使用 pytest-mock。

如何在同一个测试中模拟一个对象方法并验证该对象方法的参数?

在我的示例中,我想模拟类 Engine 中的方法“test_function”。我想检查一次使用预期参数调用方法“test_function”。

我目前使用 monkeypatch 和 mocker.patch.object 的方法很复杂,而且不起作用。当 mocker.patch.object 处于活动状态时,不会调用 mock_function。

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”?

4

1 回答 1

0

patch 方法已经确保不调用实际方法。不需要monkeypatch 功能。

于 2020-07-03T19:18:20.993 回答