Testing before committing
Running tests locally before pushing reduces CI failures and speeds up the review cycle.
Check your Python version
OSM requires Python 3.10+:
python -V
# Python 3.10.x
You can manage Python versions with pyenv.
Install dependencies in a virtual environment
cd <osm_project_local_folder>
python -m venv .venv
source .venv/bin/activate
# On Windows PowerShell: .venv\Scripts\Activate.ps1
pip install -r requirements.txt -r requirements-dev.txt -r requirements-test.txt
Run the test suite
From the project folder, run:
./devops-stages/stage-test.sh
This is equivalent to running tox directly in most projects. It covers:
Code format checks
Linting (pylint, flake8)
Unit tests with coverage
Run Robot (E2E) tests
For more complex changes, you can run the full E2E sanity suite locally using the opensourcemano/tests Docker image:
docker run --rm=true --name tests -t --env-file envconfig.rc \
-v ~/.config/openstack/clouds.yaml:/etc/openstack/clouds.yaml \
-v ~/tests/reports:/robot-systest/reports \
opensourcemano/tests:testing-daily \
-t sanity
See the tests repository README for details on configuring envconfig.rc and available test tags.