我有一个函数ping
需要传递格式的字符串
ping mpls ipv4 <ip here> <param name> <valiue> <param name> <valiue> ...
测试平台设备的方法。
def ping(device, ip_address, **kwargs):
options = ['destination', 'dsmap', 'exp', 'fec-type', 'flags', 'force-explicit', 'interval', 'output', 'pad', 'repeat', 'reply', 'session', 'size', 'source', 'sweep', 'timeout', 'ttl', 'verbose']
for key, value in kwargs.items():
if key in options:
cmd ="ping mpls ipv4 {0} {1} {2}".format(ip_address, key, value)
output = device.execute(cmd)
return output
使用示例:
ping(device, ip, size='100', interval='10', sweep='100 1500 100')
device
是测试平台设备,ip
是包含IPv4 IP的字符串。
问题是它为我指定的每个关键字参数调用device.execute
一次,并且只返回最后一个返回值。如何解决这个问题?
答案 0 :(得分:0)
这有帮助吗?
valid_options = ('{} {}'.format(key, value)
for key, value in kwargs.items()
if key in options)
cmd_options = ' '.join(valid_options)
cmd = 'ping mpls ipv4 {} {}'.foramt(ip_address, cmd_options)
顺便说一下,我建议您了解generator expressions和itertools。他们将你从厄运的金字塔中拯救出来。您的test_001
函数中清晰可见反模式(大量网状循环和条件)(在当前版本的问题中编辑为无关紧要)。