我的测试没有用assertraises捕获psycopg2.integrityerror。我用的是烧瓶炼金术。

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

我的CashFlow SQLAlchemy模型有几个可以为null=False的字段它说我的测试失败,IntegrityError被打印到屏幕上,但是我的assertRaises没有捕捉到这个有人怀疑为什么吗?

最佳答案

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)

关于python - assertRaises没有捕获IntegrityError,Flask SQLAlchemy,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34404594/

10-08 23:05