打Boto3电话看起来很真实但没有效果
placebo的Python项目详细描述
安慰剂[构建状态](https://travis ci.org/garnaat/安慰剂.svg)](https://travis ci.org/garnaat/安慰剂)
[![代码健康](https://landscape.io/github/garnaat/安慰剂/master/landscape.svg?style=flat)(https://landscape.io/github/garnaat/placebo/master)
placebo允许您模拟BOTO3调用,这些调用看起来像正常调用,但实际上根本没有效果。它允许您记录一组
的调用并将其保存到数据文件中,然后在以后的
(例如在单元测试中)重放这些调用,而不必触及aws端点。
安慰剂使用Botocore中的事件机制来完成大部分工作。首先,您需要一个boto3会话对象。
~~ python
导入boto3
导入安慰剂
session=boto3.session()
~~
你可以告诉安慰剂关于这个疗程的情况,比如
这个:
~~ python
pill=安慰剂。attach(session,data_path='/path/to/response/directory')
~~
"data_path"是指向一个目录的路径,您希望在其中存储响应
,或者包含以前记录的响应您想要回放。
``attach``函数返回``pill``对象的一个实例。此对象将用于控制此会话对象创建的所有客户端的请求的所有录制和回放。
要做到这一点,只需:
~~ python
pill.record()
~~
默认情况下,``record``方法会将所有服务对
的响应记录到``数据路径'。如果您只对
某个特定服务的响应感兴趣,则可以通过传入
服务名称列表来限制录制。
~~ python
pill.record(services=-ec2,iam')
~~
这将限制记录来自"ec2"服务和"iam"服务的响应。如果要将录制限制为仅在单个服务中的特定操作
,可以执行以下操作:
~~ python
pill.record(services='ec2',operations='describeInstances,describeKeyPairs')
~~
,任何符合记录规范且在治疗过程中
被创建的客户都将具有安慰剂意识。要记录响应,只需创建客户机并像平常一样使用它。
~~ python
lambda=session.client('lambda')
lambda.list_functions()
…更多lambda调用…
~~~
每个响应都将作为单独的json数据文件保存在附加会话时指定的"data-path"路径中。来自
同一服务和操作的多个响应存储为单独的文件,在回放时将以相同的顺序回放。
要重放保存的请求:
~~ python
导入boto3
导入安慰剂
会话=boto3.session()
药丸=安慰剂。附加(会话,数据路径='/path/to/response/directory')
药丸.playback()
lambda=session.client('lambda')
lambda.list_functions()
…模拟响应有时会返回到附加到默认会话的
安慰剂需要附加到BOTO3[默认会话](http://boto3.readthedocs.io/en/latest/guide/session.html default session)
对象。
有必要通过调用"boto3.set up\u default\u session()"显式设置
默认会话。
默认会话可在"boto3.default\u session"访问。
例如:
~~ python
导入boto3
导入安慰剂
=Boto3.默认疗程
药丸=安慰剂。附加(会话,data_path='/path/to/response/directory')
pill.record()
BOTO3默认会话。
=安慰剂。附加(session,record撸format="pickle")
````
"codesha256":"i8scq2g6zkcpivhkzvzqciv4pdysxq4gz+jlcmdy5y=",
"函数名":"foobar",
"内存大小":128,
"codesize":876521,
"函数名":"arn:aws:lambda:us-west-2:123456789012:函数:foobar",
"handler":"foobar.handler",
"role":"arn:aws:iam::123456789012:role/foobar role",
"timeout":30,
"lastmodified":"2015-11-06t22:30:32.164+0000",
"runtime":"python2.7",
"description":"foos all of the bars"
}
pill.save_response(service='lambda',operation='list functions',
response_data=list_functions_response,http_response=200)
~~
响应
将按顺序返回。最后一个参数是http响应代码,
是可选的。默认值是200。
例如:
~~ python
@安慰剂会话
定义测试你的函数(self,session):
foo=foo()
arn=foo.创建iam角色(session)
self.assertequal(arn,"arn:aws:iam::123:role/{}"。format(foo.role\name))
~~
一个环境变量:
~~ bash
$安慰剂模式=记录鼻子测试。测试:test foo.test创建角色
~~~
>您可以选择通过aws配置文件以使用:
~~ bash
$安慰剂模式=foo安慰剂模式=记录鼻子测试测试。测试:testfoo.test_create_iam_roles
~~
>您可以选择设置要使用的记录格式:
``` bash
$安慰剂格式=泡菜安慰剂模式=记录鼻测试。测试:testfoo.test_create_iam_roles
``
它创建了以下json布点:
~~
测试/安慰剂/安慰剂/试验foo.测试创建角色
测试/安慰剂/试验foo.测试创建角色/iam.createrole_1.json
测试/安慰剂/试验foo.测试创建角色/iam.createrole_1.json
测试/安慰剂/试验foo.测试创建角色/iam.getrole_1.json
测试/安慰剂/试验foo.测试创建角色/iam.getrolepolicy_1.json
测试/安慰剂/testfoo.testfoo.test创建角色/u创建角色/iam.iam.getrolepolicy_1.json
测试/安慰剂/testfoo.testfoo.test是的test_create_iam_roles/iam.putrolepolicy_1.json
~~~
创建json后,只需删除环境变量并重新运行测试:
~~~ bash
$noestests tests.tests:testfoo.test_create_iam_roles
~~~
[![代码健康](https://landscape.io/github/garnaat/安慰剂/master/landscape.svg?style=flat)(https://landscape.io/github/garnaat/placebo/master)
placebo允许您模拟BOTO3调用,这些调用看起来像正常调用,但实际上根本没有效果。它允许您记录一组
的调用并将其保存到数据文件中,然后在以后的
(例如在单元测试中)重放这些调用,而不必触及aws端点。
安慰剂使用Botocore中的事件机制来完成大部分工作。首先,您需要一个boto3会话对象。
~~ python
导入boto3
导入安慰剂
session=boto3.session()
~~
你可以告诉安慰剂关于这个疗程的情况,比如
这个:
~~ python
pill=安慰剂。attach(session,data_path='/path/to/response/directory')
~~
"data_path"是指向一个目录的路径,您希望在其中存储响应
,或者包含以前记录的响应您想要回放。
``attach``函数返回``pill``对象的一个实例。此对象将用于控制此会话对象创建的所有客户端的请求的所有录制和回放。
要做到这一点,只需:
~~ python
pill.record()
~~
默认情况下,``record``方法会将所有服务对
的响应记录到``数据路径'。如果您只对
某个特定服务的响应感兴趣,则可以通过传入
服务名称列表来限制录制。
~~ python
pill.record(services=-ec2,iam')
~~
这将限制记录来自"ec2"服务和"iam"服务的响应。如果要将录制限制为仅在单个服务中的特定操作
,可以执行以下操作:
~~ python
pill.record(services='ec2',operations='describeInstances,describeKeyPairs')
~~
,任何符合记录规范且在治疗过程中
被创建的客户都将具有安慰剂意识。要记录响应,只需创建客户机并像平常一样使用它。
~~ python
lambda=session.client('lambda')
lambda.list_functions()
…更多lambda调用…
~~~
每个响应都将作为单独的json数据文件保存在附加会话时指定的"data-path"路径中。来自
同一服务和操作的多个响应存储为单独的文件,在回放时将以相同的顺序回放。
要重放保存的请求:
~~ python
导入boto3
导入安慰剂
会话=boto3.session()
药丸=安慰剂。附加(会话,数据路径='/path/to/response/directory')
药丸.playback()
lambda=session.client('lambda')
lambda.list_functions()
…模拟响应有时会返回到附加到默认会话的
安慰剂需要附加到BOTO3[默认会话](http://boto3.readthedocs.io/en/latest/guide/session.html default session)
对象。
有必要通过调用"boto3.set up\u default\u session()"显式设置
默认会话。
默认会话可在"boto3.default\u session"访问。
例如:
~~ python
导入boto3
导入安慰剂
=Boto3.默认疗程
药丸=安慰剂。附加(会话,data_path='/path/to/response/directory')
pill.record()
BOTO3默认会话。
=安慰剂。附加(session,record撸format="pickle")
````
"codesha256":"i8scq2g6zkcpivhkzvzqciv4pdysxq4gz+jlcmdy5y=",
"函数名":"foobar",
"内存大小":128,
"codesize":876521,
"函数名":"arn:aws:lambda:us-west-2:123456789012:函数:foobar",
"handler":"foobar.handler",
"role":"arn:aws:iam::123456789012:role/foobar role",
"timeout":30,
"lastmodified":"2015-11-06t22:30:32.164+0000",
"runtime":"python2.7",
"description":"foos all of the bars"
}
pill.save_response(service='lambda',operation='list functions',
response_data=list_functions_response,http_response=200)
~~
响应
将按顺序返回。最后一个参数是http响应代码,
是可选的。默认值是200。
例如:
~~ python
@安慰剂会话
定义测试你的函数(self,session):
foo=foo()
arn=foo.创建iam角色(session)
self.assertequal(arn,"arn:aws:iam::123:role/{}"。format(foo.role\name))
~~
一个环境变量:
~~ bash
$安慰剂模式=记录鼻子测试。测试:test foo.test创建角色
~~~
>您可以选择通过aws配置文件以使用:
~~ bash
$安慰剂模式=foo安慰剂模式=记录鼻子测试测试。测试:testfoo.test_create_iam_roles
~~
>您可以选择设置要使用的记录格式:
``` bash
$安慰剂格式=泡菜安慰剂模式=记录鼻测试。测试:testfoo.test_create_iam_roles
``
它创建了以下json布点:
~~
测试/安慰剂/安慰剂/试验foo.测试创建角色
测试/安慰剂/试验foo.测试创建角色/iam.createrole_1.json
测试/安慰剂/试验foo.测试创建角色/iam.createrole_1.json
测试/安慰剂/试验foo.测试创建角色/iam.getrole_1.json
测试/安慰剂/试验foo.测试创建角色/iam.getrolepolicy_1.json
测试/安慰剂/testfoo.testfoo.test创建角色/u创建角色/iam.iam.getrolepolicy_1.json
测试/安慰剂/testfoo.testfoo.test是的test_create_iam_roles/iam.putrolepolicy_1.json
~~~
创建json后,只需删除环境变量并重新运行测试:
~~~ bash
$noestests tests.tests:testfoo.test_create_iam_roles
~~~