Our Tests

This project uses pytest for executing the Python tests in the ./tests directory. These tests are included in the CI.yaml and can be used to test both Python and C++ code.

Testing Python Code

Easily done with pytest!

Simply import the code you want to test (e.g. module, function, class etc.) within a script called ./tests/test_[name].py with a “name” of your choosing in the ./tests directory.

Then run pytest on the entire tests directory or on your test. For example, pytest ./tests would test every test in the ./tests directory, whereas pytest test_[name].py runs just your test.

Testing C++ Code

For testing C++ code, we first make a Python module out of it using pybind11, assuming pybind11 is already installed in the ./extern directory (see ./CMakeLists.txt).

It’s no problem if for some reason you don’t have pybind11 already in ./extern (Maybe you didn’t clone this repository with the --recursive flag?), we recommend you simply install it using git submodule, e.g.

$ git submodule add https://github.com/pybind/pybind11.git extern/pybind11
$ git submodule update --init

You can then build and compile the python module from your C++ code, provided you have first written the appropriate bindings(!), e.g.

$ cmake -S ./ -B ./build
$ cd build && make

The Python module can then tested using pytest just like an ordinary python module.

You can find out more about pybind11 by visiting their repository