0

我正在尝试修补一个名为 的导入类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()断言错误。

4

0 回答 0