Python утверждает с условиями [дубликата]

Я столкнулся с уникальной проблемой при написании тестовых случаев с pytest Если мы напишем тест как: -

a = 4
b = 5
c = 4

def match_test():
    assert a == (b or c) # (fails with `AssertionError`)

Теперь, если мы делаем то же самое, используя константы

def match_test():
    assert a == (4 or 5)  (passes)

Но проходит, если мы разобьем утверждение как:

def match_test():
    assert a == b or a == c # (passed)

То же самое происходит со строками, любопытно, если кто-нибудь может объяснить, почему это уникальное поведение, PS Я новичок в Pytest и assert утверждения.

Всего 1 ответ


Они не то же самое. (4 or 5) оценивается до 4, так

assert a == (4 or 5)

проходит с 4 == 4 .

(b or c) оценивается до 5 ( b = 5), так

assert a == (b or c)

терпит неудачу, так как 4 != 5 . assert a == (c or b) пройдет.

assert a == b or a == c

pass, потому что assert оценивает все выражение, True or False - True .


Есть идеи?

10000