Я пишу несколько модульных тестов, и мы хотели бы использовать boto.stub для имитации ответов aws.
В этом случае тестируемые функции просто извлекают IP-адреса на основе некоторых входных данных, используя функцию boto3.
Я следил за документацией boto для Stubber здесь: https://botocore.amazonaws.com/v1/documentation/api/latest/reference/stubber.html
def test_ip_address_list(self):
ec2 = botocore.session.get_session().create_client('ec2')
response = api_stub_result() #just returns the mocked up response. IP address is set to 10.10.0.10 as a test
with Stubber(ec2) as stubber:
#stubber.activate() #I've tried with and without calling activate()
stubber.add_response('describe_instances', response, {})
results = ip_addresses("prod") #returns a list of ip addresses using describe_instances
print(results)
assert ("10.10.0.10") in results
Когда я запускаю это, я ожидаю, что экземпляр, описанный в api_stub_result, будет единственным возвращенным IP-адресом или, по крайней мере, будет в списке IP-адресов.
Вместо этого функция обратилась к AWS и фактически извлекает данные для наших экземпляров.
describe_instances
непосредственно из стаббера, чтобы увидеть, вызывает ли он ожидаемый ответ. Если это так, то проверьте свой путь к кодуip_addresses
, чтобы увидеть, вводит ли он параметры в запрос, а затем либо сопоставьте их в своей заглушке, либо проигнорируйте их с помощьюstub.ANY
. - person Palpatim   schedule 21.04.2020