pytest-datadir1.7.2
Published
pytest plugin for test data directories and files
pip install pytest-datadir
Package Downloads
Authors
Project URLs
Requires Python
>=3.8
pytest-datadir
pytest plugin for manipulating test data directories and files.
Usage
pytest-datadir
automatically looks for a directory matching your module's name or a global data
folder.
Consider the following directory structure:
.
├── data/
│ └── hello.txt
├── test_hello/
│ └── spam.txt
└── test_hello.py
You can access file contents using the injected fixtures:
datadir
(for module-specifictest_*
folders)shared_datadir
(for the globaldata
folder)
def test_read_global(shared_datadir):
contents = (shared_datadir / "hello.txt").read_text()
assert contents == "Hello World!\n"
def test_read_module(datadir):
contents = (datadir / "spam.txt").read_text()
assert contents == "eggs\n"
The contents of the data directory are copied to a temporary folder, ensuring safe file modifications without affecting other tests or original files.
Both datadir
and shared_datadir
fixtures return pathlib.Path
objects.
lazy_datadir
Version 1.7.0 introduced the lazy_datadir
fixture, which only copies files and directories when accessed via the joinpath
method or the /
operator.
def test_read_module(lazy_datadir):
contents = (lazy_datadir / "spam.txt").read_text()
assert contents == "eggs\n"
Unlike datadir
, lazy_datadir
is an object that only implements joinpath
and /
operations. While not fully backward-compatible with datadir
, most tests can switch to lazy_datadir
without modifications.
License
MIT.