datadir-mgr plugin for pytest

The datadir-mgr
plugin for pytest provides the datadir_mgr
fixture which
allow test functions to easily download data files and cache generated data files
in data directories in a manner that allows for overlaying of results. datadir-mgr
is pathlib-based, so complete paths to data files are handled,
not just filenames.
This plugin behaves like a limited dictionary, with datadir_mgr[item]
returning a path
with the most specific scope (out of global, module, [class], [function]
that matches
the string or path specified by item
. In addition to serving data files already stored
in the data directory, the fixture provides five methods useful for adding to the test data
stored in the repository:
- The
download
method allows downloading data files into data directories, with option MD5 checksum checks, un-gzipping, and a progressbar. - The
savepath
fixture lets an arbitrary path relative to the current working directory to be saved at a particular scope in the data directories. - The
add_scope
method lets one add directories from scopes different from the present request to be added to the search path. This lets the results of previous cached steps to be used in scopes other than global. - The
in_tmp_dir
method creates a context in a temporary directory with a list of request file paths copied in. Optionally, all output file paths can be saved at a particular scope at cleanup with an optional exclusion filter pattern (e.g., for excluding log files). Note that files in directories that begin withtest_
or end with_test
could be confused with scope directories and cannnot be saved. Ifprogressbar
is set to "True", then the progress of file copying will be shown, which is helpful in some long-running pytest jobs, e.g. on Travis. - The
paths_from_scope
returns a list of all paths to files from a specified scope.
Prerequisites
Python 3.6 or greater is required. This package is tested under Linux, MacOS, and Windows using Python 3.9.