python - 使用 Django 单元测试的数据库权限

标签 python database django unit-testing

免责声明:

我是 Django 的新手。我必须说到目前为止我真的很喜欢它。 :)

(现在是“但是”……)

但是,我似乎遗漏了一些与单元测试相关的内容。我正在开发一个带有 Oracle 后端的新项目。当您运行单元测试时,它会在尝试创建架构时立即给出权限错误。所以,我明白了它想要做什么(创建一个干净的沙箱),但我真正想要的是针对现有模式进行测试。我想使用我的服务器将在生产中使用的相同用户名/密码来运行测试。当然,该用户不会拥有任何类型的 DDL 类型权限。

因此,我看到的基本问题归结为:我的系统(和大多数系统)希望其“app_user”帐户仅具有运行所需的权限。通常,这是基本的“CRUD”权限。然而,Django 单元测试似乎需要更多来进行测试运行。

其他人如何处理这个问题?是否有一些我不知道的 Django 设置/解决方法/功能(请参阅最初的免责声明)。

预先感谢您的帮助。

大卫

最佳答案

不要强制 Django 做一些不自然的事情。

  1. 允许它创建测试架构。这是一件好事。

  2. 从您现有的架构中,执行unload 以创建数据的 .JSON 转储文件。这些文件是您的“固定装置”。 Django 使用这些固定装置来填充测试数据库。这是有史以来最伟大的测试工具。一旦您调整好固定装置,这确实很管用。

  3. 将您的夹具文件放入每个应用程序包内的 fixtures 目录中。

  4. 更新您的单元测试以命名该测试用例所需的各种固定文件。

这实际上是使用现有模式进行测试。它会在原始数据库中重建、重新加载和测试,因此您可以绝对确保它在不破坏(甚至触及)实时数据的情况下正常工作。

关于python - 使用 Django 单元测试的数据库权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2195791/

相关文章:

django - 如何将 Cache-Control header 添加到托管在 Heroku 上的静态文件中?

python - Boto 是否会重试失败的 md5 检查?

python - 仅当远程文件比本地副本更新时,如何使用 boto 从 S3 下载文件?

java - hibernate org.hibernate.MappingException : Could not determine type SimpleStringProperty

sql - Oracle:分层查询中的编号组

django - 我如何知道用户使用 Stripe Checkout.js 选择什么计划?

python - 运行 cp 命令来复制文件或在 Python 中更改文件名

python - 在一个 fasta 中查找重叠群的长度,使用另一个 fasta 的 header 作为 python 中的查询

mysql - 如何转换为显式连接?

python - 从 Django 内部调用时,Subprocess.Popen 与交互式程序挂起