Packages are available on PyPi and can be installed with pip
:
pip install modflow-devtools
To set up a modflow-devtools
development environment, first clone the repository:
git clone https://github.com/MODFLOW-USGS/modflow-devtools.git
Then install the local copy as well as testing, linting, and docs dependencies:
pip install .
pip install ".[lint, test, docs]"
Fixtures provided by modflow-devtools
can be imported into a pytest
test suite by adding the following to the consuming project's top-level conftest.py
file:
pytest_plugins = ["modflow_devtools.fixtures"]
modflow-devtools
provides fixtures to load models from external repositories:
MODFLOW-USGS/modflow6-examples
MODFLOW-USGS/modflow6-testmodels
MODFLOW-USGS/modflow6-largetestmodels
By default, these fixtures expect model repositories to live next to (i.e. in the same parent directory as) the consuming project repository. If the repos are somewhere else, you can set the REPOS_PATH
environment variable to point to their parent directory.
Note: a convenient way to persist environment variables needed for tests is to store them in a .env
file in the autotest
folder. Each variable should be defined on a separate line, with format KEY=VALUE
. The pytest-dotenv
plugin will then automatically load any variables found in this file into the test process' environment.
The test model repos can simply be cloned — ideally, into the parent directory of the modflow6
repository, so that repositories live side-by-side:
git clone https://github.com/MODFLOW-USGS/modflow6-testmodels.git
git clone https://github.com/MODFLOW-USGS/modflow6-largetestmodels.git
First clone the example models repo:
git clone https://github.com/MODFLOW-USGS/modflow6-examples.git
The example models require some setup after cloning. Some extra Python dependencies are required to build the examples:
cd modflow6-examples/etc
pip install -r requirements.pip.txt
Then, from the autotest
folder, run:
pytest -v -n auto test_scripts.py --init
This will build the examples for subsequent use by the tests. To save time, models will not be run — to run the models too, omit --init
.