Running and writing tests#
All functionality in kikuchipy is tested via the pytest
framework. The tests reside in a
test directory within each module. Tests are short
methods that call functions in kikuchipy and compare resulting output values with known
answers. Install necessary dependencies to run the tests:
pip install --editable .[tests]
Some useful fixtures,
like a dummy scan and corresponding background pattern, are available in the
kikuchipy.data module tests check that data not part of the package
distribution can be downloaded from the kikuchipy-data GitHub repository, thus downloading some datasets of ~15
MB to your local cache.
To run the tests:
pytest --cov --pyargs kikuchipy
--cov flag makes coverage.py
print a nice report in the terminal. For an even nicer presentation, you can use
Then, you can open the created
htmlcov/index.html in the browser and inspect the
coverage in more detail.
To run only a specific test function or class, .e.g the
pytest -k TestEBSD
This is useful when you only want to run a specific test and not the full test suite, e.g. when you’re creating or updating a test. But remember to run the full test suite before pushing!
Docstring examples are tested with pytest as well. If you’re in the top directory you can run:
pytest --doctest-modules --ignore-glob=kikuchipy/*/tests kikuchipy/*.py
Tips for writing tests of Numba decorated functions:
A Numba decorated function
numba_func()is only covered if it is called in the test as
Always test a Numba decorated function calling
numba_func()directly, in addition to
numba_func.py_func(), because the machine code function might give different results on different OS with the same Python code. See this issue for a case where this happened.