Idempotent setup можно безопасно выполнять повторно: повторный запуск приводит систему к тому же исходному состоянию без ошибок «уже существует».
Разбор
- Пример: upsert пользователя вместо create, который падает на unique constraint.
- Важно для ретраев CI и локальных перезапусков одного теста.
- Cleanup тоже проектируют идемпотентным: delete if exists.
- Связано с изоляцией: каждый тест готовит своё, не полагаясь на чужой порядок.
Итог
Идемпотентность setup/teardown снижает flaky при ретраях и параллели.