Django测试使用现有数据库

end*_*dre 17 django django-testing

我很难定制测试数据库设置行为.我想实现以下目标:

  • 测试套件需要使用现有数据库
  • 测试套件不应擦除或重新创建数据库,而是从mysql转储加载数据
  • 由于db是从转储填充的,因此不应加载任何fixture
  • 完成测试后,不应销毁数据库

我很难让testsuiterunner绕过创作.

e4c*_*4c5 6

快进到2016年,django内置了在测试之间保留数据库的能力.它以manage.py 的--keep标志的形式提供

Django 1.8中的新功能.在测试运行之间保留测试数据库.这样做的优点是可以跳过create和destroy操作,这可以大大减少运行测试的时间,特别是在大型测试套件中.如果测试数据库不存在,它将在第一次运行时创建,然后为每次后续运行保留.在运行测试套件之前,任何未应用的迁移也将应用于测试数据库.

这几乎满足了您在问题中提到的所有标准.事实上,它甚至更进了一步.在每次运行之前无需导入转储.