Skip to main content
 首页 » 编程设计

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

2025年01月19日35TianFang

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

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

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

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

  1. 运行保持数据库的测试:manage.py test --keepdb
  2. 运行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