调用自定义函数时,将Boto3 Stubber用作上下文管理器

时间:2019-06-10 20:08:49

标签: python boto3 stubbing

我正在编写一些单元测试,我们希望使用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并实际上为我们的实例提取了数据。

1 个答案:

答案 0 :(得分:0)

在调用要测试的方法之前,必须激活存根。因此,在stubber.add_response之后添加一行以激活stubber:

stubber.activate()

它应该可以正常工作