我们有一个测试夹具,它可以修补两个类,如下所示。
@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 是第三方导入的许可证用户(使用加密)的类检查并服务于三个目的。
- 检查许可证验证的所有加密方法。
- 如果用户通过方法 isvalid() 拥有有效的许可证
- 通过方法 userrole() 设置用户的正确授权
通过修补 UserLicense 我可以测试 isvalid,但是当我尝试修补方法以获取用户角色时,它不会将方法的返回值设置为管理员并且测试失败。
修补方法的正确方法是什么?