在模块已修补时正确修补pytest中的方法
我们有一个测试夹具,它修补两个类,如下所示在模块已修补时正确修补pytest中的方法,pytest,pytest-mock,Pytest,Pytest Mock,我们有一个测试夹具,它修补两个类,如下所示 @pytest.fixture def license_fixture(mocker): mocker.patch('api.license_api.UserLicense') mocker.patch('api.license_api.UserLicense.userrole', return_value = 'admin') # doesn't work. l_mock = mocker.patch('api.li
@pytest.fixture
def license_fixture(mocker):
mocker.patch('api.license_api.UserLicense')
mocker.patch('api.license_api.UserLicense.userrole', return_value = 'admin') # doesn't work.
l_mock = mocker.patch('api.license_api.LicenseContent')
yield l_mock
LicenseContent为许可证内容的api调用提供服务,并使用UserLicense
UserLicense是针对许可证用户的第三方导入的类检查(使用加密)并为三个用户提供服务
修补方法的正确方法是什么?您可以修补模拟对象的
返回值:
@pytest.fixture
def许可证固定装置(模拟装置):
user\u license=mocker.patch('api.license\u api.UserLicense'))
user_license.return_value.userrole.return_value='admin'
l\u mock=mocker.patch('api.license\u api.LicenseContent')
产量l_mock
userrole
是一个实例方法,因此它是在UserLicense
的实例上调用的,而不是类本身。实例是调用类的返回值。因此,在修补时,您需要记住这一点
摘自
类似问题:
此命令的目的是什么:mocker.patch('api.license\u api.UserLicense')
?它除了引起错误之外什么都不做。它实际上模拟了整个类。