- Параллельные тесты безопасны: у каждого своя независимая база, которая удаляется после успешного прохождения теста.
- Поддерживает популярные миграторы из коробки: migrate, goose, dbmate и другие (+ можно написать свой адаптер).
- Подключается в пару строк:
pgtestdb.New(t, conf, migrator) возвращает *sql.DB + есть pgtestdb.Custom для альтернативных клиентов.Как это работает:
- При первом вызове
pgtestdb.New ищется готовая template-БД; если её нет - создаётся пустая БД, гоняются миграции, база помечается как шаблон. Затем для каждого теста создаётся клон из шаблона. - Клонирование из шаблона очень быстрое - десятки миллисекунд.
- Выбор шаблона делается по хешу ваших миграций; синхронизация через Go-локи и Postgres advisory locks, поэтому миграции запускаются ровно один раз.
- Если тест прошёл - его БД удаляется; если упал - остаётся, а в логи выводится строка для подключения и анализа содержимого.
P.S. Кто-то даже сделал клон на Python, но из коробки нет поддержки alembic #golang #postgres #testing #ci
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1