Python 有条件断言
Python assert with conditions
我 运行 在使用 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
语句的新手。
它们不一样。 (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
通过,因为 assert
计算整个表达式,True or False
是 True
。
我 运行 在使用 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
语句的新手。
它们不一样。 (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
通过,因为 assert
计算整个表达式,True or False
是 True
。