gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:02:08 27 4
gpt4 key购买 nike

我已阅读 this问答,并且已经尝试在我的代码中捕获引发 IntegrityError 异常的异常,这种方式:

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

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

有什么想法吗?

最佳答案

其中一个会成功:

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

或者:

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)

我更喜欢使用 assertRaises作为上下文管理器(使用 with)。

关于python - 测试抛出 IntegrityError 的 SQLAlchemy 代码的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19289291/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com