Skip to content

Testing

From the repo root, the default test command is:

uv run --no-sync pytest

When a full run is too heavy, at least run the tests relevant to your change:

uv run --no-sync pytest tests/unit/engine/research/test_engine_research.py
uv run --no-sync pytest tests/unit/engine/test_cli.py
uv run --no-sync pytest tests/unit/api/test_python_api.py
uv run --no-sync pytest tests/unit/trackers
uv run --no-sync pytest tests/unit/configs

Native wrapper changes are covered under tests/unit/native; those tests may need CMake, OpenCV, Eigen, and a working C++ compiler.

CI smoke tests

Run the same isolated Python API smoke test used by the python_api CI job:

uv run --no-sync python -m pytest -p no:cacheprovider -q -s tests/ci/python_api_smoke.py

CLI smoke tests

For CLI or engine entry-point changes, verify help and at least one representative command:

uv run --no-sync python -m boxmot.engine.cli --help
uv run --no-sync python -m boxmot.engine.cli track --help
uv run --no-sync python -m boxmot.engine.cli eval --help

For documentation changes, reproduce the docs workflow's warning-as-error build:

uv run --no-sync mkdocs build --strict

Document constraints

If GPU runtimes, datasets, or network downloads are unavailable, document exactly what you ran and what prevented fuller validation.