django - django unittest 使用“真实”数据库
问题描述
我目前正在为视图编写测试用例,最终也使用数据库。默认情况下,运行测试后会创建和删除测试数据库。
由于数据库本身是开发数据库,我不希望我的测试创建一个单独的数据库,而是只使用令人兴奋的。另外我想提醒您,在我的环境中,创建并提供了数据库,而 django 无法运行迁移或创建数据库。
如何创建使用真实数据库的单元测试?
解决方案
我认为这个问题的主要原因是因为您的 django 数据库用户没有提供创建/删除数据库权限。
为了进行单元测试,Django 需要创建和删除一个测试数据库。它不能为此目的使用现有数据库。为什么我们不允许在单元测试中使用现有数据库是因为,任何拥有相同数据库权限的人都可以修改数据,并且 django 可能无法控制他们所做的更新,这可能会导致单元不成功测试。
如果您的 DB 管理员可以为您的 Django 用户提供测试模块按预期工作所需的访问权限,您可以使用 Fixtures。Fixtures 就像数据文件,可以从您的开发环境中创建,然后可以在单元测试设置中用于将数据从 Fixtures 导入到 Django 创建的测试数据库中。
任何单元测试框架的最终目的都是用不太可能改变的数据来测试后端代码逻辑的功能。正如上面的链接中提到的,功能测试和回归测试是为了覆盖真实的数据库。
有关夹具的更多详细信息,请访问将夹具与 Django 测试用例一起使用
推荐阅读
- java - 周一:周五:无法理解它是如何工作的
- azure-monitoring - 基于自定义指标的 Azure Monitor 警报
- specifications - Dafny 无法证明整数数组中的最大元素
- chart.js - 我可以用两种颜色更改 Chart.js 的同一行吗?
- performance - 将大数据从解析器传递到客户端的网络时间很慢
- r - 是否有用于在 R Shiny 中创建数据框的 R 函数
- javascript - 从给定数据包装一个 div 和锚标签
- java - 使用可变程序参数以灵活的方式启动 docker
- c - 如何修复 C 中的“内存泄漏”
- mysql - 如何查询mysql表中记录的总字节长度?