Boto Stubber SQS

4

我需要模拟Boto SQS接收消息,但是我收到了以下错误信息:

属性错误:'Stubber'对象没有属性'receive_message'

sqs_client属性是一个Stubber,但是receive_message无法识别,我不知道为什么。

import unittest
from api.modules.sqs_consumer import SqsConsumer
from botocore.stub import Stubber
from botocore.stub import ANY

class TestSqsConsumer(unittest.TestCase):

def test_should(self):
    # given
    sqs_consumer = SqsConsumer()
    sqs_consumer_stup = Stubber(sqs_consumer.sqs_client)

    expected_params = dict(
        QueueUrl=ANY,
        MaxNumberOfMessages=ANY,
        WaitTimeSeconds=ANY,
        MessageAttributeNames=[
            'All'
        ])

    sqs_consumer_stup.add_response(
        method='receive_message',
        service_response={},
        expected_params=expected_params
    )

    sqs_consumer_stup.activate()
    sqs_consumer.sqs_client = sqs_consumer_stup

    # when
    sqs_consumer.process()

    # then
    self.assertEqual(True, True)

if __name__ == '__main__':
    unittest.main()
1个回答

2
Boto3 stubber在调用激活时对boto客户端进行原地更新,因此您不需要这行代码。
sqs_consumer.sqs_client = sqs_consumer_stup

上述代码行将sqs_client替换为您不需要的Stubber对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接