Rya*_*zel 14 python django unit-testing
我希望能够使用现有的测试数据库来运行我的测试,并且每次我想运行测试时都不会让Django创建和删除数据库.这可能吗?
mou*_*uad 15
这是可能的,这是一种方式:
1)在这里定义你自己的测试运行器,看看如何.
2)对于你的自定义测试运行器在默认测试运行器中查看,你可以复制并通过代码并只注释这一行: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
Run Code Online (Sandbox Code Playgroud)
3)将setting.py中的TEST_RUNNER绑定到测试运行器.
4)现在运行你的测试:./ manage.py test
小智 6
谁在使用Django> = 1.8
python manage.py test --keepdb
Run Code Online (Sandbox Code Playgroud)
--keepdb在测试运行之间保留测试数据库.这样做的优点是可以跳过create和destroy操作,这可以大大减少运行测试的时间,特别是在大型测试套件中.如果测试数据库不存在,它将在第一次运行时创建,然后为每次后续运行保留.在运行测试套件之前,任何未应用的迁移也将应用于测试数据库.