这是测试某些事物是否相等并捕获其他异常的好方法吗?
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')
答案 0 :(得分:1)
您的逻辑介入了。如果要测试其中至少有一个变量不是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
。如果需要,则捕获该特定异常。