我有这样的声明。
我只想知道两个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/