使用LNP/BP编写应用程序自动测试的框架
lnpbp-testkit的Python项目详细描述
LNP/BP测试套件
在LNP/BP基础上编写应用程序自动测试的框架
关于
此框架允许您轻松测试应用程序中涉及LNP/BP付款的流程。 通常的流程是:
- 在应用程序中创建付款请求(BIP21或BOLT11)
- 支付请求
- 检查申请是否收到付款
这看起来很简单,但步骤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-testkit
。
Important:不要在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存储库
- 确保您已经安装并激活了
systemd
(警告:这不是大多数Docker映像中的默认设置!)在 - 将
lnd
安装到您的$PATH
- 安装regtest
bitcoind
- 安装程序regtest
lnd
连接到bitcoind
- 将
lnd-testkit-regtest@.service
文件从此存储库复制到/etc/systemd/user/
- 通过提供所需的参数来实例化
Network
:
- 现在您可以使用
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意味着打破变化。在
- 项目
标签: