如何在每次测试后重置 Django 测试数据库 ID?

2024-03-07

我有一个 django 应用程序,我正在其上运行一些单元测试。所以我遇到的问题不是当一个测试插入测试数据库时。这是随后的测试。由于每个测试都不保存交易,因此先前测试的条目不存在这很好,尽管自动增量 id 正在增加,就好像数据库中仍然有条目一样。我需要修复这个问题,因为我要插入更多数据,而我无法控制为其提供的 id,并且需要能够获取此特定数据进行测试。如果我对代码进行硬编码以获取对象,则每次添加新测试时都必须更改代码,这并不理想。

我正在运行多个测试,但为了简单起见,我将显示两个。

from django.test import TestCase
from app.models import Model

class VersionMerge(TestCase):
   fixtures = ['initial_test_data.json']

   def test_model_test1(self):
       *Insert new data*
       *grab new data in*
       *Check data*

   def test_model_test2(self):
       *Insert new data*
       *grab new data*
       *Check data*

问题出现在测试模型测试2当我尝试获取新数据时,我必须打印出对象才能查看 id 才能获取它。

我有一个关于如何在实际数据库上修复此问题的解决方案,但没有在测试数据库上修复此问题。对于我的,我需要能够连接到 docker 容器并运行 psql 命令来重置 table_id_seq。

docker exec -t  $CONTAINER_ID psql --dbname=test_database_name -username=user -c "SELECT setval('modelName_appName_id_seq', 2, true)"

这将转到表并将最后一个 id 值设置为 2,以使下一个 id 为 3。但是,每当我尝试使用 python 内部运行命令时

cmd = "command above"
os.system(cmd)

当我运行这个时,我收到以下错误。

sh: 1: docker: not found
sh: 1: docker: not found

寻求对此的任何帮助,无论是问题的新解决方案还是对我的改进。

太长了;我需要能够修改 django 单元测试创​​建的数据库中的数据。


如果您需要测试来重置主键序列,您可以发出 RawSQL 查询来执行此操作。到底如何做到这一点已在这个 StackOverflow 问题 https://stackoverflow.com/a/4678411/219519.

如果您使用 pytest,则可以使用更简单的选项。我们在所有 Django 项目中都使用 pytest 和 pytest-django,这使得测试变得轻而易举。 pytest-django 提供可以采用布尔参数来重置序列的数据库装置 https://pytest-django.readthedocs.io/en/latest/helpers.html#pytest-mark-django-db-request-database-access。像这样使用它:

@pytest.mark.django_db(transaction=True, reset_sequences=True)
def mytest():
    [...]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在每次测试后重置 Django 测试数据库 ID? 的相关文章

  • 使用 Pandas 解析时避免 Excel 的科学记数法舍入

    我有一个自动生成的 Excel 文件 其中偶尔包含非常大的数字 例如135061808695 在 Excel 文件中 当您单击单元格时 它会显示完整的数字135061808695然而 在视觉上 使用自动 常规 格式 数字显示为1 35063
  • OpenCV Python 和 SIFT 功能

    我知道有很多关于Python and OpenCV但我没有找到有关这个特殊主题的帮助 我想提取SIFT关键点来自 python OpenCV 中的图像 我最近安装了 OpenCV 2 3 可以访问 SURF 和 MSER 但不能访问 SIF
  • 加速 Numpy 数组上的循环

    在我的代码中 我有一个 for 循环 它对多维 numpy 数组进行索引 并使用每次迭代时获得的子数组进行一些操作 看起来像这样 for sub in Arr do stuff using sub 现在使用完成的东西sub是完全矢量化的 所
  • Python 字典不按顺序排列

    我创建了一个字母表字典 其值从0开始 并根据单词文件增加一定的量 我对最初的字典进行了硬编码 我希望它保持按字母顺序排列 但事实并非如此 我希望它按字母顺序返回字典 基本上与初始字典保持相同 我怎样才能保持秩序 from wordData
  • python-click:添加修改其他参数行为的选项

    这个问题是关于click http click pocoo org 5 包裹 Click 是一个用于创建漂亮命令行的 Python 包 使用尽可能少的代码以可组合的方式进行接口 它是 命令行界面创建工具包 它具有高度可配置性 但带有开箱即用
  • 在 Docker 容器中以主机用户身份运行

    在我的团队中 我们在进行开发时使用 Docker 容器在本地运行我们的网站应用程序 假设我正在开发 Flask 应用程序app py具有依赖关系requirements txt 工作流程大致如下 I am robin and I am in
  • 实时/热重载不适用于 dockerized NestJS API

    我遇到了一个奇怪的问题 我目前正在使用 Windows 10 并通过 WSL2 运行 docker 我在 Windows 文件管理器中克隆了存储库 并且我尝试在 DEV 中运行它 也就是说 一旦我更新了在我的本地存储库中的文件中 此更改反映
  • 如何获取sql server 2005中数据库连接的详细列表?

    如何获取sql server 2005中数据库连接的详细列表 使用系统存储过程sp who2
  • 将现有的 auth.User 数据迁移到新的 Django 1.5 自定义用户模型?

    我不想毁掉我网站上的所有用户 但我想利用 Django 1 5 的自定义可插入用户模型 这是我的新用户模型 class SiteUser AbstractUser site models ForeignKey Site null True
  • Django 视图中的原始 SQL 查询

    我将如何使用原始 SQL 执行以下操作views py from app models import Picture def results request all Picture objects all yes Picture objec
  • 正则表达式 - Python - 删除前导空格

    我使用正则表达式在文本文件中搜索 产品 一词 然后 我使用该搜索的起点和终点来查看该列并提取整数 有些实例 A 列 有我不想要的前导空格 我只想将数字 如 B 列中的数字 打印到文件中 没有前导空格 正则表达式中的正则表达式 有条件的 pr
  • 单笔交易与多笔交易[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • sh read 命令会吃掉输入中的反斜杠吗?

    也许最容易用一个例子来解释 echo echo while read in do echo in done 看来read命令将输入 中的反斜杠解释为转义符并删除它们 我需要逐行处理文件而不更改其内容 并且我不知道如何停止在这里智能读取 有任
  • 使用 South 更改 Django 模型列默认值

    我在 Django 项目中使用 South 和 Postgresql DB 我想更改一个模型字段的默认值以供继续使用 我不需要以前的记录 刚刚新记录 我是否需要为此进行迁移 或者只是更改模型 旧场详细信息 background style
  • 在硬件级别模拟按键 - Windows

    我正在寻找一种语言或库 使我能够在最大可能的水平上模拟击键 而无需实际按下按键 我对击键级别的具体衡量标准是 当我的计算机已经运行按键侦听器 例如鼠标键和粘滞键 时 它是否会产生与物理按键相同的输出 我尝试过很多击键模拟的方法 java A
  • 使 ArrayField 的 base_field 对于 Django 中的表来说是唯一的

    Goal 下面应该提出一个ValidationError gt gt gt m1 MyModel names name1 gt gt gt m2 MyModel names name1 name2 gt gt gt m1 save gt g
  • API 调用时出现 UnicodeEncodeError (json)

    我正在尝试打印此 API 调用的结果 但收到 UnicodeEncodeError 可能是超级菜鸟问题 但非常感谢任何帮助 import http client import json api key hidden connection h
  • Django如何通过模板修改数据库记录

    我想删除我选择的记录 并且run html将会刷新 我该怎么做 由于我使用函数run在views py中发送数据库中的记录 以及run需要一个参数构建 可以通过使用获得run name 所以我认为当我单击提交按钮时 我需要传递 run na
  • Python FFmpeg查询rtsp太慢

    目前 我正在尝试使用 python 和 FFmpeg 来查询原始格式为 h264 的 rtsp 数据 直播流视频的信息为 fps 29 分辨率 1280 720 我希望我可以以相同的格式 h264 查询数据并将其放入python队列中以便将
  • 为什么 Pytest 对夹具参数执行嵌套循环

    使用 Pytest 我想编写一个测试函数 该函数接受多个装置作为参数 每个灯具都有几个参数 例如 test demo py 中是一个函数test squared is less than 10需要固定装置 negative integer

随机推荐

  • removeAllCachedResponses无法清除sharedURLCache?

    我做了一个按钮来清除缓存 NSURLCache sharedURLCache removeAllCachedResponses 完成此操作后 我检查sharedURLCache的大小 NSInteger sizeInteger NSURLC
  • 向 jsTree 添加 jQuery 自定义图像工具提示

    这基本上是后续这个问题 https stackoverflow com questions 7096803 jquery jstree add a tooltip 我正在尝试向 jstree 添加自定义工具提示 如果将鼠标悬停在图像文件上
  • Dapper 和枚举作为字符串

    我正在尝试使用Dapper and Dapper Extensions并序列化我的enums在数据库上为string 现在它们被序列化为整数 在VARCHAR字段 代替 有什么办法可以做到这一点吗 我可以添加任何自定义类型映射吗 如果我不能
  • 将 URI 与 AndroidManifest 中的 相匹配,例如 http://example.com/something

    我正在努力应对
  • 如何使用 WSO2 API Manager 将租户设置为调解器中的标头

    我有一个 API 需要租户作为标头 如果我创建一个自定义顺序
  • laravel查询,多余的行将被插入到表格发票详细信息中。例如FROM表包含6行,执行TO表后将有21行

    ar po id variableAry explode ar foreach variableAry as var1 details11 DB table po estimations gt where po number var1 gt
  • 嵌套角度材质选项卡

    我需要向某些添加动态选项卡User Preferences屏幕 主首选项选项卡可以是具有静态内容的静态选项卡 但第二个选项卡应该嵌套mat tab元素 这些额外的动态首选项来自后端 然后我可以使用 ngFor渲染额外的选项卡 我现在看到的问
  • 处理 CloudKit 错误

    我正在寻找有关在 Swift 中处理 CloudKit 错误的一般建议 但在网上找不到好的示例 这是我想知道的事情 1 每次出现错误的可能性时 我是否应该考虑每种错误类型 或者这实际上没有必要 2 我读到 处理 CloudKit 错误的一种
  • Puppeteer:屏幕截图惰性图像不起作用[重复]

    这个问题在这里已经有答案了 我似乎无法捕获屏幕截图https today line me HK pc https today line me HK pc成功地 在我的 Puppeteer 脚本中 我还启动了滚动到页面底部并再次向上滚动以确保
  • Pandas Dataframe - 值是列表

    我有一个只有一列的 Pandas Dataframe 但每一行的值都是五个元素的列表 如下所示 Column timestamp 06 54 00 1 2 3 4 5 06 55 00 0 5 2 3 4 5 1 3 我想分离数据 以便获得
  • 为什么向量中的分配器是 const ?

    向量在每种类型的构造函数中都有这个 const allocator type alloc allocator type 为什么它是常量 我不明白这有什么用处 我可以看到传入一个分配器 因此多个向量可以共享同一个池 但可以与另一组向量分开 但
  • 像 Matlab 一样的 gnuplot ytics 表示法

    我想设置 ytics 符号 就像这个 Matlab 图 图形框上只有一个 x10 5 一样 是否可以 你当然可以这样做by hand在 gnuplot 中 使用enhanced许多终端的选项并设置label set terminal png
  • 无法理解 a = b = 0 的目的;

    我目前正在阅读 Java 初学者指南 书中的某些地方有一段代码让我感到困惑 但我找不到它的作用的解释 int a int b a b 0 This is the line I don t understand 我所理解的是 0 的值被复制到
  • 如何使数据库大小超过 256 字节 [链接器文件 - MPLAB ]

    我有 PIC18F87J11 系列 并且正在使用 MPLAB C18 编译器 我可以给以下变量的最大字节是多少 我知道我必须修改链接器文件才能达到 256 字节以上 pragma udata CONNECTION TABLE 这是我干净的链
  • Scala 中的执行上下文是什么?

    我是 Scala 新手 正在尝试使用一些并行结构 Future尤其 我发现有一个类型的隐式参数ExecutionContext IMO 它类似于 并且可能比 线程池的概念 我试图通过学习它文档 http docs scala lang or
  • Microsoft UI 自动化教程/参考 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我最近使用 Microsoft Accessibility API 实现了一个程序 但后来被告知新的
  • 使用双重哈希时,最佳的第二哈希函数是什么?

    我在一些人们使用的论坛上看到 7 key mod 7 or 6 key mod 6 这用于为任何大的键值计算双哈希的第二个哈希函数 使用 6 甚至不是素数 或 7 有什么重要性吗 或者它只是随机生成一些值 与线性探测和二次探测不同 参考 h
  • nbconvert 多索引数据帧到乳胶

    我正在尝试使用 ipython 的 nbconvert 将多索引 Pandas DataFrame 导出到乳胶 但多索引行结果都是错误的 我在代码开头使用以下代码来正确转换为乳胶 我在 SO 上的某个地方找到了它 但不记得在哪里 from
  • ViewPager内的ScrollView,自动滚动到中间

    我有一个 ViewPager 其中包含同一片段的多个实例 该片段包含一篇文章 文章视图层次结构非常简单 一个标题 一个横幅图像 一个副标题和一个正文 除了标题之外的所有内容都包含在滚动视图中 问题是 当您滑动到新页面时 片段会在顶部显示视图
  • 如何在每次测试后重置 Django 测试数据库 ID?

    我有一个 django 应用程序 我正在其上运行一些单元测试 所以我遇到的问题不是当一个测试插入测试数据库时 这是随后的测试 由于每个测试都不保存交易 因此先前测试的条目不存在这很好 尽管自动增量 id 正在增加 就好像数据库中仍然有条目一