django - 为什么 django SimpleTestCase 创建测试数据库

标签 django database performance unit-testing

this 中所述问题和 django docs , 在单元测试中使用 SimpleTestCase 时,django 不应创建测试数据库(这需要太长时间)。

在我的一个名为“搜索”的应用程序中,我有一些从 SimpleTestCase 继承的单元测试。这是搜索应用程序中的 tests.py:

class TokenizerTestCase(SimpleTestCase):
    def test_one(self):
        self.assertItemsEqual(1, 1)

当我调用 python manage.py test search.tests.TokenizerTestCase 时,构建默认数据库花费的时间太长。有人知道它为什么要创建测试数据库吗?

最佳答案

默认情况下,SimpleTestCase 创建一个测试数据库。您可以扩展该类以获得您自己的功能。如果您不想在每个设置中创建自己的数据库,请设置您自己的扩展类的测试环境。

覆盖 _pre_setup 和 _post_teardown 方法。有关详细信息,请阅读 TransactionTestCase 的源代码,了解它如何创建测试数据库结构。

阅读源码here

关于django - 为什么 django SimpleTestCase 创建测试数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27216171/

相关文章:

python - Django Heroku,服务器不支持 SSL,但需要 SSL

php - 数据库中的复杂关系(使用 Laravel)

database - 如何确定多值依赖MVD(传递规则)?

Swift 4 字符串索引在处理大字符串时偏移太慢

c++ - 写入 bool 条件 "in full"是否会影响性能?

django - 带有日期差异的查询注释

django - 使用 jinja2 渲染模板时如何过滤 html 标记?

django - 为什么 Django 的 render() 函数需要 "request"参数?

mysql - PDO - 如何更新用户名 = :user_id, 绑定(bind)值的名字

c++ - 将大图像切片为 10x10 图像的有效方法(opencv)