为啥 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 创建测试数据库的主要内容,如果未能解决你的问题,请参考以下文章