如何指定Django Tests使用的数据库而不是每次都构建它?

时间:2011-01-05 16:51:11

标签: python django unit-testing

我希望能够使用现有的测试数据库来运行我的测试,并且每次我想运行测试时都不会让Django创建和删除数据库。这可能吗?

2 个答案:

答案 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操作,这可以大大减少运行测试的时间,特别是在大型测试套件中。如果测试数据库不存在,它将在第一次运行时创建,然后为每次后续运行保留。在运行测试套件之前,任何未应用的迁移也将应用于测试数据库。