Ловля исключений в остальном - PullRequest
0 голосов
/ 21 мая 2019

Это хороший питонный способ проверить что-то на равенство и перехватить исключения в другом?

try:
    # Check for equality
    debug.assert_eq(data, None)
    debug.assert_eq(id, None)
    debug.assert_eq(time, None)
    debug.assert_eq(group, None)

except Exception:
    print("OK")

else:
    raise Exception('None found')

1 Ответ

1 голос
/ 21 мая 2019

Ваша логика довольно .. запутана.Если вы хотите проверить, является ли хотя бы одна из этих переменных не None, то используйте any():

debug.assert(any(v is not None for v in (data, id, time, group)))

any(), итерации повыражение генератора v is not None for v in (data, id, time, group) и возвращает True в тот момент, когда оно встречает результат True.Это означает, что если data не равно None, то остальные 3 значения не проверяются.Если, однако, все 4 значения равны None, то any() возвращает False и проверка утверждения не пройдена.

Я не знаю, какую платформу вы используете для проверки утверждений, я предполагал, что будет.assert() метод.

При отлове исключения ошибки утверждения я бы не перехватил Exception, это слишком широко и маскирует ошибки.Тестовый фреймворк вызовет определенные исключения для ошибок подтверждения сигнала, такие как встроенный AssertionError.Вместо этого перехватите это конкретное исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...