Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在pytest中模拟和验证类方法中的参数_Python 3.x_Pytest_Pytest Mock - Fatal编程技术网

Python 3.x 在pytest中模拟和验证类方法中的参数

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

我正在尝试在我的pytest中使用pytest mock

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

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

我目前使用monkeypatch和mocker.patch.object的方法很复杂,无法工作。mocker.patch.object处于活动状态时,不会调用mock_函数

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”,并检查其参数。这已经通过修补方法实现了吗?是的。正如我所写的,您的问题可能是您没有修补正确的对象(检查)。