Python:使用Flas模拟修补错误

2024-09-30 22:27:52 发布

您现在位置:Python中文网/ 问答频道 /正文

在编写Python方面,我是个新手,更不用说测试它了。在

这是我的烧瓶终点:

@blueprint.route('/mailing_finish/<account_id>/<sumall_stream_id>/', methods=['POST'])
def mailing_finish(account_id, sumall_stream_id):
    """
    Get Response for mailing_id and update dataset:
    * MYEMMA_EMAIL_SENDS: response['sent']
    """

    # TODO: webhook does not fire

    data = json.loads(request.data)['data']

    access_token = sumall_redis.get_oauth_token(account_id)

    response_data = sumall_audience.get_response_data(
        access_token=access_token,
        account_id=account_id,
        mailing_id=data['mailing_id'],
    )

    event = {
        'timeStamp': data['timestamp'][3:],
        'eventId': 'mailing_id:{mailing_id}'.format(
            mailing_id=data['mailing_id'],
        ),
        'data': {
            'MYEMMA_EMAIL_SENDS': {
                'value': response_data['recipient_count'],
                'dimensions': [
                    {
                        'dimension': 'MAILINGS',
                        'value': data['mailing_id'],
                    },
                ],
            },
        },
    }

    status = sumall_api.post_stream_event(
        stream_id=sumall_stream_id,
        event=event,
    )

    return 'Data sent to SumAll', status

这是我的测试:

^{pr2}$

我收到的错误是:

AssertionError: Expected call: get_oauth_token('123456')
Not called

我不知道怎么了。任何帮助将不胜感激!谢谢!在


Tags: tokeneventiddatastreamgetaccessemail
1条回答
网友
1楼 · 发布于 2024-09-30 22:27:52

您在视图模块中导入了sumall_redis作为本地名称,但是模仿了原来的sumall.utils.sumall_redis。在

您可能在视图模块的顶部显示了以下内容:

from sumall.utils import sumall_redis

这会将该对象绑定到模块中的本地名称。当测试开始并应用补丁时,sumall.utils模块中的原始sumall_redis对象将受到影响,而不是这个本地名称。在

您需要模拟视图模块中绑定的名称:

^{pr2}$

这同样适用于你方另外两种进口产品。在

mock文档包含一个关于where to patch的指南,您可能需要阅读。在

相关问题 更多 >