Настраиваем автоматическое обнаружение flaky-тестов: повторные прогоны, статистический анализ, карантин
Flaky tests — тесты которые падают случайно. Автоматическое обнаружение критично для production CI/CD.
pip install pytest-flakyimport pytest
@pytest.mark.flaky(reruns=3, reruns_delay=2)
def test_api_with_timeout():
"""Тест который может случайно упасть"""
response = requests.get("http://api/slow-endpoint", timeout=1)
assert response.status_code == 200- name: Run tests with flaky detection
run: |
pytest --flaky-report=flaky-report.txt -v
- name: Check for flaky tests
if: always()
run: |
if [ -f flaky-report.txt ]; then
echo "⚠️ Flaky tests detected!"
cat flaky-report.txt
fi# tests/conftest.py
def pytest_collection_modifyitems(items):
"""Mark known flaky tests"""
flaky_tests = [
"test_external_api_timeout",
"test_race_condition"
]
for item in items:
if item.nodeid in flaky_tests:
item.add_marker(pytest.mark.quarantine)
item.add_marker(pytest.mark.xfail(reason="Known flaky test"))Следующий урок: Финал: Production CI/CD проект
Вопросы ещё не добавлены
Вопросы для этой подтемы ещё не добавлены.
Далее: CI/CD: Quality Gates и защита main