Pytest嘲笑补丁属性:错误``功能''对象没有属性``补丁''

时间:2019-06-08 06:56:46

标签: python pytest api-design

我正在尝试模拟使用ocker.patch.object创建的另一种方法。但是我得到了AttributeError。使用嘲笑者是新手,但还没有看到可以帮助解决这种情况的示例。

尝试了从模拟程序调用方法的不同方式。

在tests / test_unit.py之内

from pytest_mock import mocker

class TestApp:

 def setup_method(self):
        self.obj = ClassApi()

 def test_class_api_method(self, client):

        return_value = {'name': 'test'}
        mocker.patch.object(self.obj, 'method_to_mock')
        mocker.result(return_value)

在项目/服务中

class ClassApi:

       def method_to_mock(self, input1):
         ...
        return result

AttributeError:“函数”对象没有属性“补丁”

1 个答案:

答案 0 :(得分:0)

我对Pytest-Mock并不超级熟悉,但是基于对文档的了解,您应该使用mocker作为固定装置。所以您的功能应如下所示:

 def test_class_api_method(self, client, mocker):

        return_value = {'name': 'test'}
        mocker.patch.object(self.obj, 'method_to_mock')
        mocker.result(return_value)

pytest在运行时会自动向测试函数提供参数嘲笑者,因此无需导入它。