1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
# pytest-datadir
pytest plugin for manipulating test data directories and files.
[](https://github.com/gabrielcnr/pytest-datadir/workflows/build/badge.svg?branch=master)
[](https://pypi.python.org/pypi/pytest-datadir)
[](https://anaconda.org/conda-forge/pytest-datadir)

[](https://github.com/psf/black)
# Usage
pytest-datadir will look up for a directory with the name of your module or the global 'data' folder.
Let's say you have a structure like this:
```
.
├── data/
│ └── hello.txt
├── test_hello/
│ └── spam.txt
└── test_hello.py
```
You can access the contents of these files using injected variables `datadir` (for *test_* folder) or `shared_datadir`
(for *data* folder):
```python
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"
```
pytest-datadir will copy the original file to a temporary folder, so changing the file contents won't change the original data file.
Both `datadir` and `shared_datadir` fixtures are `pathlib.Path` objects.
# Releases
Follow these steps to make a new release:
1. Create a new branch `release-X.Y.Z` from `master`.
2. Update `CHANGELOG.rst`.
3. Open a PR.
4. After it is **green** and **approved**, push a new tag in the format `X.Y.Z`.
Travis will deploy to PyPI automatically.
Afterwards, update the recipe in [conda-forge/pytest-datadir-feedstock](https://github.com/conda-forge/pytest-datadir-feedstock).
# License
MIT.
|