测试抛出 IntegrityError 的 SQLAlchemy 代码的正确方法是什么?

2024-02-03

我读过了this https://stackoverflow.com/questions/129507/how-do-you-test-that-a-python-function-throws-an-exception问答,并且已经尝试捕获我的代码中引发 IntegrityError 异常的异常,如下所示:

self.assertRaises(IntegrityError, db.session.commit())

但不知何故,我的单元测试仍然失败,并因 IntegrityError 异常而停止。我希望它会说“OK”,因为我已经预计在我的单元测试中会有例外。 这是由尝试插入具有相同唯一字段值的行的代码引起的。

任何想法?


其中之一就是诀窍:

# ... only if version >= 2.7
with self.assertRaises(IntegrityError):
    db.session.commit()

Or:

self.assertRaises(IntegrityError, db.session.commit)

您的示例与正确方法之间的区别是:

# Your example: You call db.session.commit(), this will raise an exception before
# assertRaises is called
self.assertRaises(IntegrityError, db.session.commit())

# Correct way: Pass what should be called to assertRaises, 
# let assertRaises invoke it and check for exception
self.assertRaises(IntegrityError, db.session.commit)

我更喜欢使用断言加注 http://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRaises作为上下文管理器(使用with).

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

测试抛出 IntegrityError 的 SQLAlchemy 代码的正确方法是什么? 的相关文章

随机推荐

  • 最终用户计算机上的 C# 数据库访问需要 Microsoft Access 吗?

    也许是个愚蠢的问题 我在我的计算机上开发了一个应用程序 它使用 Microsoft Access 数据库 mdb 来访问某些信息并使用 OLEDb 用监控数据填充表 该应用程序在我的机器上运行良好 但是当我将版本放在测试机器上 没有 MS
  • `git push --force` 的其他后果?

    关于强制执行的问题和解答git push不难找到 here https stackoverflow com questions 11184267 how to push to repo after doing git commit amen
  • jQuery 使用两个按钮上下滚动 div

    我有一组简单的两个按钮 当悬停时应该使 div 上下移动以模拟滚动效果 down hover function scroll animate marginTop 50px fast up hover function scroll anim
  • rebase后Git分支出现了分歧,那么为什么要rebase呢?

    最近我收到通知说我的分支出现了分歧 就在那时 我创建了一个功能分支 将其推送到远程 并在几天后再次开始处理它时与 master 进行了 rebase git checkout b feature branch git push origin
  • 如果 url 包含以下内容,则不显示此内容

    我有一个简单的 div 如果访问者加载某个 URL 我不想加载它 它看起来像这样 问题是 它不起作用 当我加载 www url com blog 时 div stuff 仍然显示 我只是缺乏睡眠还是上述方法应该有效 如果 url 包含 bl
  • Openrefine - 根据文本将行转置为列

    我收到了来自图书馆目录的数据转储 它以 txt 格式显示 我已经能够将数据放入电子表格中 但它们都在一列中 我想将行转置为列 这一列中的数据按以下顺序排列 标题 文件类型 作者 日期 但在某些情况下 目录记录按以下顺序出现 标题 文件类型
  • 从android中的fragment管理工具栏的导航和后退按钮

    我所有的片段都是通过控制的ActionBarActivity mainActivity 在 mainActivity 内DrawerLayout已实现 所有子片段均通过抽屉布局的列表项单击推送 我面临的问题是通过抽屉布局推送片段后我想将抽屉
  • 网络自动化工具

    我意识到我需要一个成熟的浏览器自动化工具来测试用户与我们的 JavaScript 小部件库的交互 我使用 qunit 从单元测试开始 然后我不明智地开始合并越来越多的功能测试 这是一个坏主意 尝试用 JavaScript 模拟大量用户操作
  • 在 python 中比较字符串时忽略空格

    我正在使用 difflib python 包 不管我是否设置isjunk论证 计算出的比率是相同的 是不是忽略了空格的差异isjunk is lambda x x In 193 difflib SequenceMatcher isjunk
  • 如何在Marklogic中使用Group By?

    我想在 xquery 中使用 Group By 有人可以告诉我如何在 Marklogic 中使用 Group By 吗 或者 您可以使用调用 XSLTxdmp xslt invoke or xdmp xslt eval MarkLogic
  • Pydev:将标准输出发送到真实(tty)终端

    跟进上一个问题 子进程 PyDev 控制台与 cmd exe https stackoverflow com questions 10236260 subprocess pydev console vs cmd exe 有没有办法改变 Py
  • 将警告转换为错误

    在 Windows 中 VC 有一个不错的选择 We http msdn microsoft com en us library thxezb7y aspx将特定警告转换为错误 此外 VC 发出的每个警告都有一个警告编号 例如 warnin
  • 如何将 Reader monad 添加到 Scotty 的 monad 中?

    我正在尝试使用 Scotty 构建一个非常简单的 API 我想扩展 Scotty monad 以便我的路由处理程序操作能够访问不变的环境 我相信做到这一点的方法是添加一个Readermonad 到堆栈 现在我只想传递一些Text周围的数据
  • 如何在 php 中添加形状文件 (.shp) 并在 php 文件中使用该形状文件数据?

    我必须在 php 中开发一个项目 并且必须包含形状文件 并且该形状文件需要转换为 kml 文件 我知道如何将形状文件转换为 kml 文件 但我不知道如何将形状文件导入 导入到 php 项目中 我还有包含更多信息的形状文件的支持文件 其中一些
  • 使用python访问google

    我怎样才能访问谷歌 我试过那个代码 urllib urlopen http www google com 但它显示消息prove you are human或者有些人的想法是这样的 有人说尝试用户代理 我不知道 您应该使用谷歌应用程序编程接
  • 在本地计算机上编译 Azure Functions(.csx 文件)

    我正在使用 AzureQueue 触发器模板 最好在本地计算机中编写函数 编译并执行它 然后部署 而不是在 azure 门户中编写它 有什么办法可以做到吗 Thanks Krishh 答案是肯定的 但目前体验并不好 随着我们增强服务 本地开
  • Alamofire HTTPS 10.3 中的更改

    我目前正在一个项目中使用 Alamofire 并且看到了有关具有不同功能的 10 3 beta 的问题 我有一个在 iOS 10 2 模拟器中运行良好的相同项目 我使用自签名证书向 HTTPS url 发出 get 请求 当我在安装了相同证
  • 如何打印 groupby 对象

    我想打印与 Pandas 分组的结果 我有一个数据框 import pandas as pd df pd DataFrame A one one two three three one B range 6 print df A B 0 on
  • CUDA 不支持边界检查

    我尝试使用 Numba 并访问 GPU 以加速代码 但出现以下错误 in jit raise NotImplementedError bounds checking is not supported for CUDA NotImplemen
  • 测试抛出 IntegrityError 的 SQLAlchemy 代码的正确方法是什么?

    我读过了this https stackoverflow com questions 129507 how do you test that a python function throws an exception问答 并且已经尝试捕获我