Как я выполняю модульный тест против производственной базы данных?

Как я выполняю модульный тест против производственной базы данных вместо тестовой базы данных?

У меня есть ошибка, которая это, кажется, происходит на моем рабочем сервере, но не на моем компьютере разработчика.

Я не забочусь, повреждается ли база данных.

5
задан BryanWheelock 7 April 2010 в 00:05
поделиться

6 ответов

Возможно ли сделать копию базы данных или части базы данных, которая вызывает проблему? Если у вас есть резервный сервер, вы можете скопировать данные оттуда (убедитесь, что у вас есть еще одна резервная копия, на случай, если вы испортите резервную базу данных).

В общем, вы не хотите возиться с живыми данными и не хотите остаться без резервной копии на случай, если вы что-то испортите (а вы это сделаете!).

3
ответ дан 14 December 2019 в 19:08
поделиться

Краткий ответ: нет.

Длинный ответ: нет, вы делаете копию производственной базы данных и запускаете ее там

1
ответ дан 14 December 2019 в 19:08
поделиться

Используйте manage.py dumpdata> mydata.json , чтобы получить копию данных из вашей базы данных.

Перейдите на локальный компьютер, скопируйте mydata.json в подкаталог своего приложения под названием fixtures , например myapp / fixtures / mydata.json и выполните:

manage.py syncdb # Set up an empty database
manage.py loaddata mydata.json

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

1
ответ дан 14 December 2019 в 19:08
поделиться

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

Как вы сейчас тестируете тестовую базу данных? Под тестовой базой данных вы подразумеваете SQLite?

HTH,
Berryl

0
ответ дан 14 December 2019 в 19:08
поделиться

Первое, что нужно попробовать, это вручную выполнить тестовый код в оболочке в производственной среде. сервер.

python manage.py shell

Если это не сработает, вам может потребоваться сбросить производственные данные, скопировать их локально и использовать как приспособление для тестового набора, который вы используете.

Если есть способ попросить django использовать стандартную базу данных без создания новой, я думаю, вместо создания фикстуры вы можете сделать sqldump, который обычно будет намного меньшего размера.

0
ответ дан 14 December 2019 в 19:08
поделиться

Сделайте копию базы данных ... Это действительно хорошая практика !!

Просто выполните тест, вместо этого вызовите фиксацию, вызовите откат в конце.

0
ответ дан 14 December 2019 в 19:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: