Как указано в документах The assert statement, вы можете дать выражение после выражения теста утверждения; что второе выражение будет передано в 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)
Если вы хотите провести различие между ними, используйте отдельные блоки try/except для каждого оператора. – BrenBarn
Самое простое решение - удалить 'try' /' expect'. –
@KlausD. Яркий комментарий, но, возможно, Logesh хочет продолжить выполнение после того, как будут вызваны любые 'AssertionError' в этом блоке; конечно, это вообще не безопасная стратегия, но иногда это полезно, как в моей демонстрации. –