Testing
DASCore’s test suite is run with pytest. While in the base dascore repo (and after installing DASCore for development) invoke pytest from the command line:
pytest tests
You can also use the cov flags to check coverage. Please make sure you don’t introduce large blocks of dead code.
pytest tests --cov dascore --cov-report term-missing
If you would like to test the IO modules it can be done like so:
pytest tests/test_io
Or a particular IO module:
pytest tests/test_io/test_dasdae.py
Pytest is highly configurable and has some rather useful flags such as -s, -x, and –pdb (especially with pdbpp).
To run the docstring tests use the following:
pytest dascore --doctest-modules
Writing Tests
Tests should go into the tests/
folder, which mirrors the structure of the main package. For example, if you are writing tests for dascore.Patch
, whose class definition is located in dascore/core/patch
it should go in tests/test_core/test_patch.py
.
In general, tests should be grouped together in classes. Fixtures go as close as possible to the test(s) that need them, moving from class, module, and then to conftest. Checkout the pytest documentation for a review on fixtures (and why to use them).