The golden rule of testing: If it is not tested, it does not work.
Therefore, we test the QUEENS code base
- to ensure our code is working as expected
- to check compatibility w.r.t. to new features
- to find bugs faster
- New tests are required if a new feature is introduced (see our contributing guidelines).
- Our tests are written according to the arrange-act-assert principle.
QUEENS is tested using pytest. For a comprehensive list of pytest commands, see here. Some additional useful commands to test QUEENS are listed in the following:
| Test | Command |
|---|---|
| In parallel with pytest-xdist | pytest -n <num_workers> |
| With verbose output | pytest -ra -v |
| With logging output | pytest -o log_cli=true --log-cli-level=INFO |
| With coverage report | pytest --cov-report=html --cov |
| Only the last failed | pytest --lf |
In QUEENS, tests are organized using pytest markers. This allows you to run all tests in a group with a single command:
| Description | Command |
|---|---|
| Unit tests | pytest -m unit_tests |
| Integration tests | pytest -m integration_tests |
| 4C integration test (see below) | pytest -m integration_tests_fourc |
| List markers | pytest --markers |
For the integration tests in QUEENS that require the multiphysics simulation framework 4C, the user needs to create a symbolic link to the 4C-executable and store it under <queens-base-dir>/config:
ln -s <path-to-4C-build-directory> <queens-base-dir>/config/4C_build