pytest-web3-data 0.2.1

Creator: bradpython12

Last updated:

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.