我正在编写一些单元测试,我们希望使用boto.stub模拟出aws响应。
在这种情况下,被测试的功能只是使用boto3根据某些输入提取IP地址。
我在这里关注了Stubber的boto文档: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并实际上为我们的实例提取了数据。
答案 0 :(得分:0)
在调用要测试的方法之前,必须激活存根。因此,在stubber.add_response之后添加一行以激活stubber:
stubber.activate()
它应该可以正常工作