Бото Стаббер SQS - PullRequest
       10

Бото Стаббер SQS

0 голосов
/ 21 ноября 2018

Мне нужно смоделировать сообщения boto sqs, но я получаю сообщение об ошибке:

AttributeError: у объекта '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 Ответ

0 голосов
/ 02 января 2019

Стаббер Boto3 выполняет обновление на месте для клиента boto при вызове активации.Поэтому вам не нужна эта строка

sqs_consumer.sqs_client = sqs_consumer_stup

Вышеуказанные строки заменяют sqs_client на объект Stubber, который вам не нужен.

...