跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Django 连接 oracle 进行单元测试时创建测试用户的问题
未分類
18 4 月 2021

Django 连接 oracle 进行单元测试时创建测试用户的问题

Django 连接 oracle 进行单元测试时创建测试用户的问题

資深大佬 : piaochen0 10

环境描述:
Django default 数据库用的 mysql,现在一个功能需要查询 oracle 数据库中的一些存量表。(不是用 django 模型建立的,其他系统的存量表。此处只是查询这些表。)

现象和过程:
现在进行单元测试的时候发现,加了–keep 的情况下,mysql 没问题,但是 oracle 会打印:
Creating test user…
在 oracle 中,真的发现新建了一个 test_XXX 的用户
网上搜了一圈,看到有文章说在 oracle 数据库连接配置中,加入:
‘TEST’: {
“USER”: “原用户名”,
}
这样试了以后,测试是跑起来了,但是该连接用户的密码却被改了…
应该是单元测试新建用户的时候,发现系统中有同名用户,就直接把密码改了

于是我继续把 PASSWORD 也加进去,这样能跑起来了。但是该用户下,多了一张 django_migrations 表。
‘TEST’: {
“USER”: “原用户名”,
“USER”: “原用户密码”,
}

问题:
此处我只想用单元测试去查询这些 oracle 的表,很多情况下配的 oracle 的用户只有查询权限。
这种情况下我这样配置有没有问题。还是应该写成其他的样子?
单元测试时如何不在 oracle 上生成 django_migrations 表?

这块我搜了好久,没找到有效答案。麻烦各位。多谢。

大佬有話說 (5)

  • 資深大佬 : Cooky

    配俩数据库,把 Django 自己的那部分放 SQLite 里,搜一下就有

  • 資深大佬 : Vegetable

    关于 migrations 的问题,你可以试一下这个。
    https://docs.djangoproject.com/zh-hans/3.1/topics/db/multi-db/#allow_migrate

    我面临这种测试需要依赖存量数据的情况时,并没有让测试代码去连接去访问只读数据库,而是 copy 了一份旧数据当作测试数据,放到同一个数据库了,并编写一个专门的 db router,将测试代码指向这些数据。主要是我本地测试也连不到那个线上数据库,避免了一些麻烦事

  • 主 資深大佬 : piaochen0

    @Cooky 现在就是配的两个数据库,default 配置的就是 mysql 的,mysql 里面本身就有 django 自带的表。现在是 oracle 里面莫名其妙多了一个 django_migrations 表,内容也和 mysql 里面的一样。

  • 資深大佬 : Vegetable

    哦对,因为 django 自动创建测试数据库,我还得在 setup 里边执行一个导入 sql,先这些数据表初始化。测试的时候只用了一个 sqlite 。

  • 資深大佬 : Cooky

    @piaochen0 你定义完 model 之后 migrate 生成的吧,看看有没有对应的 py

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具