如何使用Robot Framework交叉校验多个IP是否存在重复
Robot Framework 多IP地址交叉校验方案
原有方案失效原因
Should Not Match Regexp是BuiltIn库下的单字符串正则匹配关键字,仅支持传入1个待校验字符串、1个匹配规则,其余参数会被解析为报错提示、正则匹配标记等配置项,本身不具备多值交叉比对能力,传入多个IP变量时无法覆盖第3、第4个值的校验逻辑。
推荐实现方案
优先使用Robot Framework自带的Collections标准库实现,无额外依赖,逻辑简单可靠:
- 测试套件配置段提前导入
Collections库 - 将所有待校验的IP变量存入同一个列表
- 调用
Lists Should Not Contain Duplicates关键字完成全量交叉校验,只要列表内存在重复值就会自动抛出错误,日志中会同步打印重复的具体值,支持自定义报错提示。
示例代码
*** Settings *** Library Collections *** Variables *** ${Debug IP} 192.168.101.103 ${Gateway IP} 191.168.104.102 ${Subnet mask IP} 132.145.128.101 ${NEW IP} 192.168.101.24 *** Test Cases *** IP地址合法性校验 @{all_ips} Create List ${Debug IP} ${Gateway IP} ${Subnet mask IP} ${NEW IP} # 若存在IP前后带空格的场景,可加一步遍历去除首尾空格的逻辑 Lists Should Not Contain Duplicates ${all_ips} msg=配置错误:检测到重复IP地址
自定义逻辑校验方案
如果需要定制更灵活的校验规则(比如排除特定IP、重复时输出更详细的位置信息),可以通过双层循环两两比对实现交叉校验:
*** Test Cases *** 自定义IP重复校验 @{all_ips} Create List ${Debug IP} ${Gateway IP} ${Subnet mask IP} ${NEW IP} ${total} Get Length ${all_ips} FOR ${index1} IN RANGE ${total} ${ip1} Get From List ${all_ips} ${index1} FOR ${index2} IN RANGE ${index1 + 1} ${total} ${ip2} Get From List ${all_ips} ${index2} Run Keyword If '${ip1}' == '${ip2}' Fail 重复IP:${ip1},分别位于第${index1+1}、${index2+1}个配置项 END END
内容的提问来源于stack exchange,提问作者Abhishek Kambalapalli
相关产品推荐
相关产品推荐

