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
초 expression이 문자열을 할 필요가 없다는 것, 그것이 무엇이든 할 수있다 : 다음은 간단한 데모입니다. 어서션은 사용자 논리 데이터를 검증하는 것이 아니라 프로그램 논리를 검증하는 데에만 사용해야하므로 일반적으로 멋지게 형식화 된 문자열을 전달하는 것을 신경 쓰지 않고 관련 값을 포함하는 튜플과 식별 문자열을 전달합니다. 예,
assert (a * b > c), ('Bad product', a, b, c)
두 문장을 구별하려면 각 문장에 대해 'try/except' 블록을 별도로 사용하십시오. – BrenBarn
가장 간단한 해결책은'try' /'expect'를 제거하는 것입니다. –
@KlausD. 공정한 코멘트이지만 Logesh는 그 블록에있는 어떤 AssertionError가 제기 된 후에도 실행을 계속하고자합니다. 물론, 그것은 일반적으로 안전한 전략은 아니지만, 때로는 유용합니다. 데모와 같습니다. –