在测试期间隔离braintree沙盒上的状态。
btnamespace的Python项目详细描述
braintree命名空间隔离braintree网关上的状态:
importbraintreeimportbtnamespacewithbtnamespace.Namespace():customer=braintree.Customer.create({"id":"123"})assertcustomer.id=="123"braintree.Customer.find("123")# successbraintree.Customer.find("123")# NotFound exception
这在集成测试期间主要有用:
defsetUp(self):self.namespace=btnamespace.Namespace()self.namespace.__enter__()deftest_some_sandbox_integration(self):#...deftearDown(self):self.namespace.__exit__()
与在tearDown期间调用egbraintree.Customer.delete相比,这有许多优点:
- 因为不需要拆卸,所以速度更快
- 它更简单,因为它不需要任何簿记
- 它是健壮的,因为测试可以在没有任何状态假设的情况下编写
您可以使用$ pip install btnamespace安装它。
支持的内容
- 客户创建、更新、查找、删除
- 信用卡创建、更新、查找、删除
- 事务创建,查找
所有涉及子资源的操作-例如在一次呼叫中创建信用卡和客户-按预期工作。
添加对其他操作的支持很容易;我们只是还不需要它们。 欢迎投稿!
工作原理
在引擎盖下,一个名称空间对braintree客户端库进行全局修补。
在创建操作期间,将删除所有提供的ID。 这将强制网关使用唯一的ID进行响应,这些ID稍后将映射回最初提供的ID。 下面是一个示例:
- 在对braintree.Customer.create({'id': '123', ...})的调用中,'123'存储为客户ID,调用变为braintree.Customer.create({...})。
- 然后,服务器为客户返回一个唯一的id'abcde'。'123'映射到'abcde',结果客户对象的id设置为'123'。
- 稍后,对braintree.Customer.find('123')的调用变为braintree.Customer.find('abcde')。
贡献
在您的Vitualenv中:
$ cd btnamespace
$ pip install -e .
$ pip install -r requirements.txt
要运行测试,请首先添加沙盒凭据:
$ exportBT_MERCHANT_ID=merchant-id $ exportBT_PUBLIC_KEY=public-id $ exportBT_PRIVATE_KEY=private-key
然后运行$ python tests/test_integration.py。
历史记录
2.0.0
发布日期:2016-07-15
- 中断:放弃Python2.6支持
- 修复退出命名空间 后影响操作的错误
- 添加strict_missing和strict_missing异常选项
1.1.1
发布日期:2014-09-26
- 将bidict设置为0.1.5,以避免破坏较新版本的更改
1.1.0
发布日期:2014-07-28
- 为braintree.clienttoken.generate添加架构
1.0.1
发布日期:2014-04-08
- 使用较便宜的内省
- 删除装饰依赖项
1.0.0
发布日期:2014-04-07
- 初始版本