我想使用 --keepdb允许在运行测试后保留数据库的选项,因为在我的例子中,数据库的创建需要一段时间(但运行测试实际上很快)
但是,我只想保留数据库结构,而不是数据。 每次运行测试时,我都需要一个空数据库。
我知道我可以使用 tearDown 方法来删除创建的每个对象,但这是一种繁琐且容易出错的方法。 我只需要找到一种方法来告诉 Django 在单元测试结束时刷新整个数据库(而不是销毁它)。
我想制作一个非常简单的脚本:
- 运行保持数据库的测试:
manage.py test --keepdb - 运行
manage.py flushdb --database test_fugodb
但是,在第 2 步中,我得到了 django.db.utils.ConnectionDoesNotExist: The connection test_fugodb doesn't exist。这个测试数据库的名称是什么?我拿了运行测试时显示的那个:
怎么了? 谢谢!
请您参考如下方法:
测试后删除测试数据库的所有集合。 这样就不需要重新创建数据库,测试后数据库为空。
关于test数据库名的问题,在django doc中是这样描述的: https://docs.djangoproject.com/en/1.8/topics/testing/overview/#the-test-database
您可以创建自己的测试运行器来替换您的脚本: django unit tests without a db
