Python:使用Flask模拟修补程序错误

Python:使用Flask模拟修补程序错误,python,python-2.7,flask,mocking,python-mock,Python,Python 2.7,Flask,Mocking,Python Mock,在编写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:

在编写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
我收到的错误是:

AssertionError: Expected call: get_oauth_token('123456')
Not called
我不确定出了什么问题。任何帮助都将不胜感激!谢谢

您在视图模块中将sumall\u redis作为本地名称导入,但模拟原始的sumall.utils.sumall\u redis

您的视图模块顶部可能有以下内容:

from sumall.utils import sumall_redis
这会将该对象绑定到模块中的本地名称。当测试开始并应用修补程序时,只有sumall.utils模块中的原始sumall_redis对象将受到影响,而不是此本地名称

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

@mock.patch('view_module.sumall_redis')
这也适用于您的其他2个导入

模拟文档包括您可能想要阅读的指南。

您在视图模块中将sumall\u redis作为本地名称导入,但模拟原始的sumall.utils.sumall\u redis

您的视图模块顶部可能有以下内容:

from sumall.utils import sumall_redis
这会将该对象绑定到模块中的本地名称。当测试开始并应用修补程序时,只有sumall.utils模块中的原始sumall_redis对象将受到影响,而不是此本地名称

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

@mock.patch('view_module.sumall_redis')
这也适用于您的其他2个导入


模拟文档包括一个您可能想阅读的指南。

非常感谢您的帮助!非常感谢你的帮助!