Конвейеры CI
Обоснование
Цель тестирования в конвейере CI отличается от цели локального тестирования. Действительно, вы можете быстро изменить код и снова запустить тесты на своём компьютере, но в конвейерах CI это невозможно. Они выполняются на отдельном сервере и запускаются определёнными действиями.
Исходя из этого, pytest может определить, что он работает в среде CI, и адаптировать некоторые варианты своего поведения.
Как определяется среда CI
Pytest определяет, что работает в среде CI, если одна из следующих переменных среды задана непустым значением:
-
CI: используется многими системами CI. -
BUILD_NUMBER: используется Jenkins.
Влияние среды CI
Пока влияние работы в среде CI на pytest ограничено.
Если обнаружена среда CI, вывод краткой сводки тестов больше не обрезается по размеру терминала, то есть сообщение отображается целиком.
# content of test_ci.py
import pytest
def test_db_initialized():
pytest.fail(
"deliberately failing for demo purpose, Lorem ipsum dolor sit amet, "
"consectetur adipiscing elit. Cras facilisis, massa in suscipit "
"dignissim, mauris lacus molestie nisi, quis varius metus nulla ut ipsum."
)
При локальном запуске без дополнительных параметров будет выведено:
$ pytest test_ci.py ... ========================= short test summary info ========================== FAILED test_ci.py::test_db_initialized - Failed: deliberately f...
(Обратите внимание на обрезанный текст)
При запуске в CI будет выведено:
$ export CI=true $ pytest test_ci.py ... ========================= short test summary info ========================== FAILED test_ci.py::test_db_initialized - Failed: deliberately failing for demo purpose, Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras facilisis, massa in suscipit dignissim, mauris lacus molestie nisi, quis varius metus nulla ut ipsum.
© 2015–2026 Holger Krekel and pytest-dev team
Licensed under the MIT License.
https://docs.pytest.org/en/stable/explanation/ci.html