2016-08-09 2 views
0

Я создаю тесты для API. Я хотел бы настроить БД и очистить ее для каждого теста. Проблема в том, что моя БД очень сложная и большая, поэтому я хотел бы знать, есть ли способ сделать полную настройку и очистить всю тестовую БД, которая не слишком тяжелая. Спасибо за ваши рекомендации. Если вам нужна дополнительная информация, дайте мне знать. В случае, если это помогает, я использую phpunit для тестов и использую симфонию в качестве моей рамки.Настройка и очистка базы данных после теста Postgress и PHP

+0

Как сделать дубликат БД и после каждого теста вы можете просто перезаписать БД, который вы использовали только с оригинальным (другим). Вы можете клонировать его довольно быстро, то есть от phpMyAdmin. – MilanG

+0

Спасибо @MilanG за ваш быстрый ответ. Я тоже об этом подумал. Дело в том, что тест будет использоваться другими людьми, поэтому мне нужно будет настроить его и перед тестом. Я ищу способ загрузить весь файл sql с помощью php и таким образом, который не будет слишком тяжелым для системы, поскольку у БД есть много таблиц и множество данных. Хорошо, что las-часть относительна, но позволяет говорить большую для моей системы. – Eli

+1

Затем вы можете использовать дамп базы данных mysql, а затем из команды mysql php call console для импорта этой дампы в db. Поэтому в любое время, когда вы хотите «перезагрузить» свою таблицу, просто выполните «exec» или некоторую аналогичную команду, чтобы вызвать mysql для повторного импорта db. – MilanG

ответ

1

Это очень просто с базами данных шаблонов.
Вы создаете и заполняете базу данных теста, которую вы хотите, назовем ее test_template.
Затем убедитесь, что никто не может подключиться:

ALTER DATABASE test_template ALLOW_CONNECTIONS false IS_TEMPLATE true; 

Затем создайте тестовую базу данных с

CREATE DATABASE test123 TEMPLATE test_template; 

Для очистки, вы просто удалить базу данных. Вы должны будете убедиться, что никто не подключен, когда вы его уроните, используйте функцию pg_terminate_backend, чтобы убить все остальные соединения.

+0

Thanks Laurenz, Это было очень полезно. Я использовал это и после использования pg_restore для поддержания чистой тестовой базы данных. – Eli

Смежные вопросы