Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 捕获else中的异常_Python_Testing_Exception - Fatal编程技术网

Python 捕获else中的异常

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、时间、组)生成器表达式,并在遇

这是一个很好的python方法来测试某个东西的平等性,并捕获其他东西的异常吗

试试看:
#检查是否相等
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)))