Python 捕获else中的异常
这是一个很好的python方法来测试某个东西的平等性,并捕获其他东西的异常吗Python 捕获else中的异常,python,testing,exception,Python,Testing,Exception,这是一个很好的python方法来测试某个东西的平等性,并捕获其他东西的异常吗 试试看: #检查是否相等 debug.assert_eq(数据,无) debug.assert_eq(id,无) debug.assert_eq(时间,无) debug.assert_eq(组,无) 除例外情况外: 打印(“确定”) 其他: 引发异常(“未找到”) 您的逻辑相当复杂。。卷入的如果要测试这些变量中是否至少有一个不是None,请使用: any()迭代v对于v in(数据、id、时间、组)生成器表达式,并在遇
试试看:
#检查是否相等
debug.assert_eq(数据,无)
debug.assert_eq(id,无)
debug.assert_eq(时间,无)
debug.assert_eq(组,无)
除例外情况外:
打印(“确定”)
其他:
引发异常(“未找到”)
您的逻辑相当复杂。。卷入的如果要测试这些变量中是否至少有一个不是None
,请使用:
any()
迭代v对于v in(数据、id、时间、组)
生成器表达式,并在遇到True
结果时返回True
。这意味着如果数据
不是无
,则不测试其他3个值。但是,如果所有4个值都是None
,则any()
返回False
,断言测试失败
我不知道您使用什么框架来测试断言,我假设会有一个.assert()
方法
当捕获断言失败异常时,我不会捕获
异常
,这太广泛了,会掩盖错误。测试框架将引发特定的异常以表示断言失败,例如内置的。如果必须的话,可以捕获特定的异常。为什么不翻转逻辑,检查是否不等于?这很有意义测试应该实现什么?这4个值中最多有一个不是None
?或者至少有一个不是None
?为什么不直接计算None
值呢?不。实际上,你不能“测试某个值是否相等”——你需要两个值,以便一个值与另一个值相等。一个好的python方法是使用==操作符。如果要检查变量是否为None,请使用is
运算符:如果x为None
。
debug.assert(any(v is not None for v in (data, id, time, group)))