Django:如何在运行测试后保持数据库结构没有数据?

时间:2017-11-28 15:48:35

标签: python django unit-testing

我想使用允许在运行测试后保留数据库的--keepdb选项,因为在我的情况下,dabatase的创建需要一段时间(但运行测试实际上很快)

但是,我只想保留数据库结构,而不是数据。 每次运行测试时,我都需要一个空的数据库。

我知道我可以使用tearDown方法删除每个创建的对象,但这是一个单调乏味且容易出错的方法。 我只需要找到一种方法来告诉Django在单元测试结束时刷新整个dabatase(而不是销毁它)。

我想要制作一个非常简单的脚本:

  1. 运行测试,保持db:manage.py test --keepdb
  2. 运行manage.py flushdb --database test_fugodb
  3. 然而,第二步,我得到了django.db.utils.ConnectionDoesNotExist: The connection test_fugodb doesn't exist。这个测试数据库的名称是什么?我在运行测试时显示了一个:

    出了什么问题? 谢谢!

1 个答案:

答案 0 :(得分:1)

在测试后删除测试数据库的所有集合。 通过这种方式,db不需要重新创建,测试后db也是空的。

对于测试数据库名称的问题,在django doc中有描述: https://docs.djangoproject.com/en/1.8/topics/testing/overview/#the-test-database

你可以创建自己的测试运行器来替换你的脚本: django unit tests without a db