pytest-web3-data 0.2.1

Last updated:

0 purchases

pytest-web3-data 0.2.1 Image
pytest-web3-data 0.2.1 Images
Add to Cart

Description:

pytestweb3data 0.2.1

Pytest Web3 Data




A pytest plugin to fetch test data from IPFS HTTP gateways during pytest execution.
Table of Contents

Installation
Usage
License

Installation
pip install pytest-web3-data

Usage
Let's say we want to store our testing data at test/data/*.
Optionally, first add test/data/ to .gitignore.
Create example test data:
mkdir -p test/data/staging/
echo 'hello world!' > ./test/data/staging/hello.txt

Upload the data to the InterPlanetary File System (IPFS).
One option is to use web3.storage. Install Node/NPM, and install the w3 CLI:
npm install --location=global @web3-storage/w3

The set your upload token from https://web3.storage:
w3 token
# Paste in token from the web UI

Upload the testing data to IPFS:
w3 put ./test/data/staging --name pytest-web3-data-example --hidden --no-wrap

This outputs a reference to the Content Identifier (CID), e.g.:
# Packed 1 file (0.0MB)
# bafybeigvfmtttajzj5no3jt2xavkdncxy3xapw3rndvoxmao72vhwy4osu
⁂ Stored 1 file
⁂ https://w3s.link/ipfs/bafybeigvfmtttajzj5no3jt2xavkdncxy3xapw3rndvoxmao72vhwy4osu

When we create a test, e.g.:
# content of test_usage.py
def test_usage(web3_data):
assert web3_data.exists()
assert (web3_data / 'hello.txt').read_text() == "hello world!\n"

We can reference our CID either with a flag:
pytest --web3-data-dir=test/data/bafybeigvfmtttajzj5no3jt2xavkdncxy3xapw3rndvoxmao72vhwy4osu

or in the pytest.ini file:
# content of pytest.ini
[pytest]
web3_data_dir = test/data/bafybeigvfmtttajzj5no3jt2xavkdncxy3xapw3rndvoxmao72vhwy4osu

To add new data, copy the current web3_data directory into a staging directory, e.g. test/data/staging, add new data, and use this staging directory path for --web3-data-dir. Upload to IPFS before committing to Git.
For a robust and performant experience, we recommend running a local IPFS daemon, e.g. with ipfs-deskop.
Enjoy! 😊
License
pytest-web3-data is distributed under the terms of the MIT license.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.