Диалоги о рыбалке – Telegram
Диалоги о рыбалке
21 subscribers
2 links
IT и рыбалка 🎣

Написать мне - @treaditup
Download Telegram
👩‍💻 pgtestdb — Go-библиотека для интеграционных тестов с Postgres, с которой миграции прогоняются один раз, а на каждый тест создается своя база из шаблона за ~10-20 мс ⚡️

- Параллельные тесты безопасны: у каждого своя независимая база, которая удаляется после успешного прохождения теста.
- Поддерживает популярные миграторы из коробки: 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