【发布时间】:2020-09-07 05:29:17
【问题描述】:
我目前正在为视图编写测试用例,最终也使用数据库。 默认情况下,测试数据库会在测试运行后创建和删除。
由于数据库本身是开发数据库,我不希望我的测试创建一个单独的数据库,而是只使用令人兴奋的。 另外我想提请您注意,在我的环境中,创建并提供了数据库,而 django 无法运行迁移或创建数据库。
如何创建使用真实数据库的单元测试?
【问题讨论】:
标签: django django-views django-unittest
我目前正在为视图编写测试用例,最终也使用数据库。 默认情况下,测试数据库会在测试运行后创建和删除。
由于数据库本身是开发数据库,我不希望我的测试创建一个单独的数据库,而是只使用令人兴奋的。 另外我想提请您注意,在我的环境中,创建并提供了数据库,而 django 无法运行迁移或创建数据库。
如何创建使用真实数据库的单元测试?
【问题讨论】:
标签: django django-views django-unittest
我认为这个问题的主要原因是因为您的 django 数据库用户没有提供创建/删除数据库权限。
为了单元测试,Django 需要创建和删除一个测试数据库。它不能为此目的使用现有数据库。为什么我们不允许在单元测试中使用现有数据库是因为,任何拥有相同数据库权限的人都可以修改数据,并且 django 可能无法控制他们所做的更新,这可能会导致单元不成功测试。
这在another question's answer中有明确解释
如果您的数据库管理员可以为您的 Django 用户提供测试模块按预期工作所需的访问权限,您可以使用 Fixtures。 Fixtures 就像数据文件,可以从您的开发环境中创建,然后可以在单元测试设置中用于将数据从 Fixtures 导入到 Django 创建的测试数据库中。
任何单元测试框架的最终目的都是使用不太可能更改的数据来测试后端代码逻辑的功能。正如上面的链接中提到的,功能测试和回归测试是为了覆盖真实的数据库。
有关灯具的更多详细信息,请访问Using Fixtures with Django Test Cases
【讨论】: