Как я выполняю модульный тест против производственной базы данных вместо тестовой базы данных?
У меня есть ошибка, которая это, кажется, происходит на моем рабочем сервере, но не на моем компьютере разработчика.
Я не забочусь, повреждается ли база данных.
Возможно ли сделать копию базы данных или части базы данных, которая вызывает проблему? Если у вас есть резервный сервер, вы можете скопировать данные оттуда (убедитесь, что у вас есть еще одна резервная копия, на случай, если вы испортите резервную базу данных).
В общем, вы не хотите возиться с живыми данными и не хотите остаться без резервной копии на случай, если вы что-то испортите (а вы это сделаете!).
Краткий ответ: нет.
Длинный ответ: нет, вы делаете копию производственной базы данных и запускаете ее там
Используйте 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
Ваша локальная база данных будет заполнена данными, и вы сможете протестировать ее.
Если вас действительно не волнует удаление базы данных, то ответ Марко о откате транзакции также является моим предпочтительным выбором. Вы также можете попробовать NdbUnit , но я лично не думаю, что дополнительный багаж, который он приносит, стоит выгоды.
Как вы сейчас тестируете тестовую базу данных? Под тестовой базой данных вы подразумеваете SQLite?
HTH,
Berryl
Первое, что нужно попробовать, это вручную выполнить тестовый код в оболочке в производственной среде. сервер.
python manage.py shell
Если это не сработает, вам может потребоваться сбросить производственные данные, скопировать их локально и использовать как приспособление для тестового набора, который вы используете.
Если есть способ попросить django использовать стандартную базу данных без создания новой, я думаю, вместо создания фикстуры вы можете сделать sqldump, который обычно будет намного меньшего размера.
Сделайте копию базы данных ... Это действительно хорошая практика !!
Просто выполните тест, вместо этого вызовите фиксацию, вызовите откат в конце.