考虑这个测试功能
@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()
此测试将因IntegrityError
而失败,因为用户电子邮件列包含unique=True
此测试工作正常,但我需要检查我的测试遇到的错误是IntegrityError
,有没有办法测试/验证引发的错误?
因为错误可能在执行最后一个语句之前发生很多,然后我们在测试中会出现误报
答案 0 :(得分:2)
您可以使用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)