我有这样的声明。

我只想知道两个assert语句中的哪一个引发了异常。

try:
    assert re.search("xyz", statement)
    assert re.search("abc", statement)
except AssertionError:
    print "AssertionError : Expected Error message not found"

感谢你的回答。

最佳答案

The assert statement docs中所述,您可以在断言测试表达式之后给出一个表达式;第二个表达式将在AssertionError中传递。这是一个简单的演示:

for n in (-5, 10, 20):
    try:
        assert 0 <= n, '%d is too low' % n
        assert n <= 10, '%d is too high' % n
        print('%d is ok' % n)
    except AssertionError as err:
        print "AssertionError:", err

输出
AssertionError: -5 is too low
10 is ok
AssertionError: 20 is too high

第二个表达式不必是字符串,可以是任何东西。由于断言仅应用于验证程序逻辑,而不能用于验证用户数据,因此我通常不会麻烦传递格式正确的字符串,而只是传递包含相关值的元组,也可能传递标识字符串。例如,
assert (a * b > c), ('Bad product', a, b, c)

关于python - 如何检查哪个语句引发了异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41996128/

10-12 20:03