繁体   English   中英

python:如何测试特定类型的错误的@ unittest.expectedFailure?

[英]python: How can I test for @unittest.expectedFailure for a specific type of error?

考虑这个测试功能

    @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 ,是否可以测试/验证引发的错误?

因为错误可能在执行最后一条语句之前就发生了,所以我们的测试中会出现误报

您可以使用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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM