Run and write tests#
All functionality in orix is tested with pytest.
The tests reside in a tests
module.
Tests are short methods that call functions in orix
and compare resulting output
values with known answers.
Install necessary dependencies to run the tests:
pip install --editable ".[tests]"
Some useful fixtures are available in the
conftest.py
file.
Note
Some orix.data
module tests check that data not part of the package
distribution can be downloaded from the web, thus downloading some small datasets to
your local cache.
See the section on the data module for more
details.
To run the tests:
pytest --cov --pyargs orix
The --cov
flag makes coverage.py print a nice report.
For an even nicer presentation, you can use coverage.py
directly:
coverage html
Coverage can then be inspected in the browser by opening htmlcov/index.html
.
We strive for 100% test coverage of lines when all dependencies are installed.
Docstring examples are tested with pytest as well.
numpy
and matplotlib.pyplot
should not be imported in examples as they are
already available in the namespace as np
and plt
, respectively.
The docstring tests can be run from the top directory:
pytest orix --doctest-modules --ignore-glob=orix/tests
Tips for writing tests of Numba decorated functions:
A Numba decorated function
numba_func()
is only covered if it is called in the test asnumba_func.py_func()
.Always test a Numba decorated function calling
numba_func()
directly, in addition tonumba_func.py_func()
, because the machine code function might give different results on different OS with the same Python code.