我正在尝试修补一个名为 的导入类BotoAWSRequestsAuth
,因为我想断言一个使用身份验证的调用。
当我修补导入的类然后尝试在我的断言中使用补丁失败时,因为使用了不同的魔术模拟,我似乎无法弄清楚为什么会发生这种情况。
我得到的错误是:
AssertionError: expected call not found.
Expected: get('https://x/x/x/x/x', auth=<MagicMock name='BotoAWSRequestsAuth' id='140061268160816'>)
Actual: get('x/x/x/x/x', auth=<MagicMock name='BotoAWSRequestsAuth()' id='140061270695792'>)
.....
Differing items:
{'auth': <MagicMock name='BotoAWSRequestsAuth()' id='140061268160816'>} != {'auth': <MagicMock name='BotoAWSRequestsAuth' id='140061270695792'>}
我试图创建我的代码的提取和最小版本:
在使用身份验证的模块中:
from aws_requests_auth.boto_utils import BotoAWSRequestsAuth
def call_api(url):
auth = BotoAWSRequestsAuth(
aws_host = "host",
aws_region = 'eu-west-1',
aws_service = 'execute-api'
)
r = requests.get(url, auth=auth)
data = r.content
在测试中:
with patch(
"my_module.BotoAWSRequestsAuth"
) as mock_requests_auth:
my_module.call_api(url)
mocked_requests.get.assert_called_once_with(
url,
auth=mock_requests_auth
)
我做错了什么很明显吗?也许我实际上根本没有嘲笑构造函数调用,因为实际对象看起来像BotoAWSRequestsAuth()
断言错误。