Testing

FastF1 uses the pytest framework.

The tests are in fastf1/tests, and customizations to the pytest testing infrastructure are in fastf1.testing.

Requirements

To run the tests you will need to set up FastF1 for development.

Running the tests

In the root directory of your development repository run:

python -m pytest

pytest expects the cache directory test_cache/ to exist. You will have to create it the first time.

pytest can be configured via a lot of command-line parameters. Some particularly useful ones are:

-v or --verbose

Be more verbose

-n NUM

Run tests in parallel over NUM processes (requires pytest-xdist)

--capture=no or -s

Do not capture stdout

To run a single test from the command line, you can provide a file path, optionally followed by the function separated by two colons, e.g., (tests do not need to be installed, but FastF1 should be):

pytest fastf1/tests/test_events.py::test_event_get_session_date

Linting - Code style tests

FastF1 uses Ruff and isort to ensure that the code has a consistent style and is easily readable. All code should conform to the guidelines that are defined by PEP8.

To check whether your code is formatted correctly, run:

ruff check .

To check and correct the import order, run:

python -m isort .

If you have installed the pre-commit hooks, these commands will also be run automatically before each commit.