当前位置:  开发笔记 > 编程语言 > 正文

assertRaises没有捕获IntegrityError,Flask SQLAlchemy

如何解决《assertRaises没有捕获IntegrityError,FlaskSQLAlchemy》经验,为你挑选了1个好方法。

我的测试没有捕获带有assertRaises的psycopg2.IntegrityError.我正在使用Flask-SQLAlchemy.

def test_insert_cash_flow(self):
    cf = CashFlow()
    db.session.add(cf)
    self.assertRaises(psycopg2.IntegrityError, db.session.commit)

我的CashFlow SQLAlchemy模型有几个nullable = False字段.它说我的测试失败了,并且IntegrityError被打印到屏幕上,但我的assertRaises没有抓住这个.有人怀疑为什么?



1> davidism..:

SQLAlchemy引发sqlalchemy.exc.IntegrityError,它包装了底层异常,而不是数据库驱动程序的异常.

sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) NOT NULL constraint failed: user.name [SQL: 'INSERT INTO user (name) VALUES (?)'] [parameters: (None,)]

测试正确的异常.

from sqlalchemy.exc import IntegrityError
self.assertRaises(IntegrityError, db.session.commit)

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有