python: 如何针对特定错误类型测试@unittest.expectedFailure?
考虑这个测试函数
@unittest.expectedFailure
def test_add_existing_user(self):
user = User('test_add_existing_user', 'welcome')
db.session.add(user)
db.session.commit()
self.assertEquals(1, len(User.query.all()))
db.session.add(User(user.email, 'welcome'))
db.session.commit()
这个测试会失败,因为用户邮箱这一列设置了 unique=True
,所以会出现 IntegrityError
错误。
这个测试可以正常运行,但我想检查一下我遇到的错误是否是 IntegrityError
。有没有办法来测试或验证这个错误呢?
因为错误可能在最后一条语句执行之前就发生了,这样我们的测试就会出现误判。
1 个回答
3
你可以使用 self.assertRaises
来确保某个特定的错误被抛出。
def test_add_existing_user(self):
"""
Checks that unique constraints return an IntegrityError.
"""
user = User('test_add_existing_user', 'welcome')
db.session.add(user)
db.session.commit()
self.assertEquals(1, len(User.query.all()))
db.session.add(User(user.email, 'welcome'))
self.assertRaises(IntegrityError, db.session.commit)