Как получить значение последнего утверждения assert? - PullRequest
0 голосов
/ 20 февраля 2020

Есть ли простой способ получить значение последнего утверждения как логическое значение, чтобы я мог не запрашивать его дважды?

Пример:

assert 1 == 2
status = ???? # how can i get the boolean value of the previous assert 

Я не хочу так же, как хочу красивую функцию отчетности assert в pytest

test = 1 == 2
assert test

Ответы [ 3 ]

2 голосов
/ 20 февраля 2020

В Python 3.8 вы можете использовать новое выражение присваивания (оператор моржа):

>>> assert (test := 1 == 1)
>>> print(test)

True

Однако учтите, что если утверждение не выполнено, вы не получите оператор print, потому что assert вызывает исключение AssertionError. Если вы хотите использовать значение в сообщении об ошибке, вы можете сделать следующее:

>>> assert (test := 1 == 2), f"Value was '{test}'."

AssertionError: Value was 'False'.
0 голосов
/ 20 февраля 2020

Попробуйте это:

def my_assert(input):
    try:
        assert input
        status = True
    except AssertionError:
        status = False
    return status

my_assert(1 == 2)
0 голосов
/ 20 февраля 2020

Попробуйте следующим образом:

def f(test):
  try:
    assert test
  except AssertionError:
    return False

Вы можете сделать:

f( 1 == 2)
...