Skip to main content

pyln-testing: A library to write tests against Core Lightning

This library implements a number of utilities that help building tests for Core Lightning nodes. In particular it provides a number of pytest fixtures that allow the management of a test network of a given topology and then execute a test scenarion.

pyln-testing is used by Core Lightning for its internal tests, and by the community plugin directory to exercise the plugins.

Installation

pyln-testing is available on pip:

pip install pyln-testing

Alternatively you can also install the development version to get access to currently unreleased features by checking out the Core Lightning source code and installing into your python3 environment:

git clone https://github.com/ElementsProject/lightning.git
cd lightning/contrib/pyln-testing
uv sync --extra grpc

This will add links to the library into your environment so changing the checked out source code will also result in the environment picking up these changes. Notice however that unreleased versions may change API without warning, so test thoroughly with the released version.

Testing GRPC Bindings

The grpc bindings can be tested by setting the CLN_TEST_GRPC=1 environment variable. This will cause the testing framework to use a grpc client to talk to the cln-grpc plugin, rather than talking directly to the node's JSON-RPC interface. Since the GRPC related dependencies are guarded behind a feature flag in pyln-testing you'll need to install it with the grpc feature enabled in order to be able to run in this mode.

Below is a diagram of how the normal JSON-RPC interaction looks like, followed by one that display the grpc interaction:

CLN -- JSON-RPC -- LightningRpc -- pytest
\_____CLN_____/    \_______pytest_______/
CLN -- JSON-RPC -- cln-rpc -- rpc2grpc converters -- grpc interface -- python grpc client -- python grpc2json converter -- pytest
\_____CLN_____/    \___________cln-grpc-plugin____________________/    \__________________________pytest________________________/

As you can see the grpc mode attempts to emulate the simple JSON-RPC mode by passing the call through a number of conversions. The last step grpc2json is rather incomplete, and will cause quite a few tests to fail for now, until the conversion is completed and we reach feature parity between the interaction modes.

Metadata

Release files for pyln-testing 26.6.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyln-testing 26.6.8
File Size Uploaded
pyln_testing-26.6.8.tar.gz 55.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyln-testing 26.6.8
File Interpreter ABI Platform
pyln_testing-26.6.8-py3-none-any.whl Python 3 none any Details

Total release size: 112.2 kB

Release files / pyln_testing-26.6.8.tar.gz

Download URL pyln_testing-26.6.8.tar.gz
Size 55.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c4f69f6e6151dd10bb92705d871765edda8b58a3f4109ea6316fee07be627eb7
BLAKE2b-256 checksum
How to use checksums
3ff9305746398c5f89f1ad4d415afcf3d1c8e8376afe4b9cac42c6b39fa96152
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / pyln_testing-26.6.8-py3-none-any.whl

Download URL pyln_testing-26.6.8-py3-none-any.whl
Size 57.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cd8af47c966f60848b159f3b8c4a876bf1020114bca4743799375a37ec55928f
BLAKE2b-256 checksum
How to use checksums
05a06a4bdcb10557ca810b48c985d14a9866bc265caacf12272fbbad9ce7f1c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

26.6.8 This release

2 release files

26.6.7

2 release files

26.6.6

2 release files

26.6.2

2 release files

26.6

2 release files

26.4.2

2 release files

26.4.1

2 release files

26.4

2 release files

25.12

2 release files

25.9.1

2 release files

25.9

2 release files

25.5

2 release files

25.2.2

2 release files

25.2

2 release files

24.11

2 release files

24.8.2

2 release files

24.8.1

2 release files

24.8

2 release files

24.5

2 release files

24.2

2 release files

23.11

2 release files

23.8

2 release files

23.5

1 release file

23.2

2 release files

0.12.1

2 release files

0.12.0

2 release files

0.11.1

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.0

2 release files

0.8.2

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page