我希望能够使用现有的测试数据库来运行我的测试,并且每次我想运行测试时都不会让Django创建和删除数据库。这可能吗?
答案 0 :(得分:15)
这是可能的,这是一种方式:
1)定义您自己的测试跑步者外观here,看看如何。
2)对于您的自定义测试运行器,请查看default test runner,您可以复制并通过代码,只需注释这一行:connection.creation.destroy_test_db(old_name, verbosity)
负责销毁测试数据库,我认为您应该尝试connection.creation.create_test_db(..)
行,除非像这样:
try:
# Create the database the first time.
connection.creation.create_test_db(verbosity, autoclobber=not interactive)
except ..: # Look at the error that this will raise when create a database that already exist
# Test database already created.
pass
3)将setting.py中的TEST_RUNNER绑定到测试运行器。
4)现在运行你的测试:./ manage.py test
答案 1 :(得分:6)
谁在使用Django> = 1.8
python manage.py test --keepdb
- keepdb在测试运行之间保留测试数据库。这样做的优点是可以跳过create和destroy操作,这可以大大减少运行测试的时间,特别是在大型测试套件中。如果测试数据库不存在,它将在第一次运行时创建,然后为每次后续运行保留。在运行测试套件之前,任何未应用的迁移也将应用于测试数据库。