How to Write Tests for Quantarhei#
Every contribution must include appropriate tests. Quantarhei uses three levels of testing: unit tests, doctests, and acceptance (BDD) tests.
Running Tests#
Run the unit test suite:
$ pytest tests/unit
Run with coverage:
$ pytest tests/unit --cov=quantarhei --cov-report=term-missing
Run all checks (lint + format + type check + tests) via pre-commit:
$ pre-commit run --all-files
Writing Unit Tests#
Unit tests live in tests/unit/. Use pytest conventions — test
files are named test_*.py and test functions start with test_:
def test_molecule_energy_levels():
import quantarhei as qr
m = qr.Molecule([0.0, 1.0])
assert m.Nel == 2
Place your test file in the subdirectory that mirrors the module being
tested, e.g. tests/unit/builders/test_molecules.py for code in
quantarhei/builders/molecules.py.
Writing Doctests#
Doctests are examples embedded directly in docstrings. They are run as part of the Sphinx build and the pytest suite. Follow NumPy docstring conventions:
def get_energy(self, state):
"""Return the energy of the given state.
Parameters
----------
state : int
Index of the electronic state.
Returns
-------
float
Energy in internal units.
Examples
--------
>>> import quantarhei as qr
>>> m = qr.Molecule([0.0, 1.0])
>>> m.get_energy(1)
1.0
"""
Writing Acceptance Tests#
Acceptance tests use Behave (BDD) and live in
quantarhei/testing/resources/behave/. Features are written in
Gherkin syntax (*.feature files) with corresponding step
definitions in Python.
Feature: Molecule creation
Scenario: Create a two-level molecule
Given I create a molecule with energies [0.0, 1.0]
Then the molecule has 2 electronic levels
Run acceptance tests:
$ behave quantarhei/testing/resources/behave/