每次我编写一个具有(一个或多个)参数的函数时,我在函数体中做的第一件事就是检查每个参数的接收值是否有效。
例如:
def turn_on_or_off_power_supplies (engine, power_supply, switch_on_or_off = RemoteRebootConst.OFF):
'''
@summary:
The function turns off or turns on the switch.
@param engine:
SSH connection to the switch
@param switch_on_or_off:
This sets whether to turn off, or turn on the switch.
Use the following constants in infra_constants.py:
RemoteRebootConst.OFF = off
RemoteRebootConst.ON = on
'''
if switch_on_or_off != RemoteRebootConst.ON and switch_on_or_off =! RemoteRebootConst.OFF:
raise Exception("-ERROR TEST FAILED \n"
"Function Name: turn_on_or_off_power_supplies \n"
"Parameter 'switch_on_or_off' \n"
"Expected value: %s or %s \n"
"Actual value: %s"
% (RemoteRebootConst.ON, RemoteRebootConst.OFF, switch_on_or_off))
Output omitted...
为什么我这样做?因为这样,如果收到异常,调试的开发人员可以立即知道问题发生在哪个函数中,期望值是什么,s是什么实际值。此错误消息使调试此类问题变得更加容易。
如前所述,如果有更多参数,我将为EACH参数执行上述代码。
这使我的函数体在代码行数方面变得更大。
如果由于收到无效参数值而导致异常(函数名称,参数名称,期望值,实际值?
),是否有更多pythonic方式打印所有上述详细信息?我可以编写一个函数,它接收4个参数(函数名,参数名,期望值/ s,实际值),然后每次我想提出这种异常时使用它(这将导致每个例外这种只是一行代码而不是几行代码。
我将在此感谢任何帮助。
提前致谢。