【发布时间】:2020-10-28 20:31:03
【问题描述】:
我们有一个测试夹具,可以修补两个类,如下所示。
@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,但是当我尝试修补方法以获取用户角色时,它不会将方法的返回值设置为管理员并且测试失败。
修补方法的正确方法是什么?
【问题讨论】:
-
这是什么目的:
mocker.patch('api.license_api.UserLicense')?除了导致错误之外,它什么都不做。 -
它实际上是在模拟整个班级。
标签: pytest pytest-mock