为啥 django SimpleTestCase 创建测试数据库

Posted

技术标签:

【中文标题】为啥 django SimpleTestCase 创建测试数据库【英文标题】:why django SimpleTestCase create test database为什么 django SimpleTestCase 创建测试数据库 【发布时间】:2015-01-28 17:41:20 【问题描述】:

正如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 时,构建默认数据库需要很长时间。有人知道它为什么要创建用于测试的数据库吗?

【问题讨论】:

这家初创公司是什么样的?运行测试时 Django 会显示什么文本? @SimeonVisser 在第一行写道:为别名“default”创建测试数据库...然后打印一些有关迁移的警告。 【参考方案1】:

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

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

阅读源码here

【讨论】:

以上是关于为啥 django SimpleTestCase 创建测试数据库的主要内容,如果未能解决你的问题,请参考以下文章

为啥 django-south 不包含在 django.contrib 中? [复制]

为啥Django无法正常运行?

为啥我不能注销 django 用户身份验证?

django为啥不能实现ajax

为啥 Django 给我一个 404 错误

Django:为啥有些模型字段会相互冲突?