使用LNP/BP编写应用程序自动测试的框架

lnpbp-testkit的Python项目详细描述


LNP/BP测试套件

在LNP/BP基础上编写应用程序自动测试的框架

关于

此框架允许您轻松测试应用程序中涉及LNP/BP付款的流程。 通常的流程是:

  1. 在应用程序中创建付款请求(BIP21或BOLT11)
  2. 支付请求
  3. 检查申请是否收到付款

这看起来很简单,但步骤2远不是小事。 它包括设置regtest比特币,两个LN节点,在节点之间打开一个足够大的通道,使用适当的rpcapi。。。 本项目的目标是使第2步的Python两行代码:

fromlnpbp_testkit.cadrimportnetworknetwork().auto_pay(request)

正如您从cadr中看到的,它与Cryptoanarchy Debian Repository集成,这是推荐的,但不是强制的。 请阅读下面关于独立使用的说明。在

支持和需要的功能

  • [x] 支付任何BIP21请求(使用bitcoin:方案)
  • [x] 支付任何BOLT11发票(有或没有lightning:方案)
  • [x] 支付自定义金额到链地址
  • []使用LNURL Pay支付
  • []使用LNURL取款支付
  • []使用LN keysend支付
  • []使用PayJoin支付
  • []使用BIP21请求撤消
  • []使用链地址撤消
  • []使用螺栓11取出
  • []使用LNURL撤销
  • []使用LNURL pay取款
  • []使用LN keysend撤消
  • []使用PayJoin取款
  • []支持涉及多个LN节点的更复杂情况
  • []支持非LND LN实现

请随时提交所需功能的PRs! (如果您对LNURL感到困惑:如果您测试的是钱包,而不是服务,那么使用pay取款和pay using draft非常有用。)

使用

使用加密无政府Debian存储库(推荐)

Testkit在存储库中,只要apt install python3-lnpbp-testkitImportant:不要在apt之外安装它!与存储库中不同的版本可能无法工作。 如果没有无密码sudo,则必须使用sudo usermod -a -G bitcoin-regtest,lnd-system-regtest $USER设置权限。 Testkit假设您的应用程序也与存储库集成, 特别是bitcoin-regtest/lnd-system-regtest。在

一旦您创建并获得了支付请求(例如使用Selenium),您只需调用lnpbp_testkit.cadr.network().auto_pay(request)来支付它。在

是的,就这么简单。:)

没有加密无政府状态Debian存储库

  1. 确保您已经安装并激活了systemd(警告:这不是大多数Docker映像中的默认设置!)在
  2. lnd安装到您的$PATH
  3. 安装regtestbitcoind
  4. 安装程序regtest lnd连接到bitcoind
  5. lnd-testkit-regtest@.service文件从此存储库复制到/etc/systemd/user/
  6. 通过提供所需的参数来实例化Network
^{pr2}$
  1. 现在您可以使用network.auto_pay()支付请求

常见问题解答

如何向链地址支付任意金额?

使用auto_pay_legacy(address, decimal_amount)代替auto_pay

在支付BIP21请求之前,是否需要生成硬币?

不,这是自动的,特别的。在

如何设置节点之间的通道?

不用了,这是自动的,根据发票上的金额而定。在

我是否需要为我的应用程序创建一个Debian包来测试与CryptoAnarchyDebian存储库的集成?

不,只需使用适当的设置配置它并在运行测试之前启动它。 这就是说,如果你避免将你的应用程序的参数硬编码到测试中,那就更好了——这将使为打包应用程序编写测试变得更容易。 我计划在将来更明确地支持这个用例。 在CI中,可以通过跳过Debian包的构建来节省时间。在

为什么auto_pay()要花这么长时间才能执行?

auto_pay()的一个关键特性是它在de上生成硬币/设置频道曼德。 当需要时,它还生成辅助LN节点。 这显然需要一些时间,并且LND在初始化时不是特别快。 如果你想改进它,可以考虑写一篇针对LND的公关文章来加速,或者在他们的仓库里抱怨。 作为另一个优化,您可以在测试开始时调用warm_up()方法。 这将异步启动LND,以便您可以在LND初始化的同时执行其他操作(例如使用Selenium设置web服务)。在

这个项目使用语义版本控制吗?

是的。0.2.0意味着打破变化。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何计算大于平均值的数字的百分比。?   JavaFX中后台执行任务的服务   xml解析用于解析java中推荐的xml解析器的小文档   java Nativescript+无法实例化接收器。。。。没找到上课的机会   maven是在数百个Java测试类上应用自定义JUnit测试运行程序的更简单方法   泛型如何引用接口在Java中实现的类类型?   java序列化程序SimpleXML只发送第一行   java字符串组合/排列   java无法创建EMRclient Sdkclientexception   JavaMaven不生成“persistence.xml”文件   java找不到主要方法   java中的正则表达式正负双精度   接口对于我试图解决的问题,有Java设计模式吗?   java在创建bean时获取异常   java如何创建<?使用JCodeModel扩展子类型>?   java在javafx中制作搜索栏   java Compare Hashmap with List=new Arraylist()   java接口与具体类