Robot Framework MAC地址测试持续失败,寻求技术解决方案
问题解决:Robot Framework验证MAC地址测试持续失败
问题现象
每次运行Robot Framework测试都会失败,即便仅获取到一行MAC地址结果。
终端命令执行结果
直接通过SSH在终端执行命令,可正常输出MAC地址:
RobotFramework:~$ cat macaddresses.txt | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' | head -n 1 00:01:c0:24:a3:3b
测试用例代码
Check MAC Addresses ${macaddress}= Execute Command ifconfig | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' >> macaddresses.txt ${checkmac}= Execute Command cat macaddresses.txt | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' | head -n 1 Should Contain ${checkmac} ([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2} Set Test Message ${checkmac}
失败结果
Test MAC Addresses | FAIL | '00:01:c0:24:a3:3b' does not contain '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
调试日志
20230124 20:08:16.397 : INFO : ${checkmac} = 00:01:c0:24:a3:3b
20230124 20:08:16.398 : FAIL : '00:01:c0:24:a3:3b' does not contain '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
补充尝试
改用Should Match Regexp关键字后仍然失败:
Should Match Regexp ${checkmac} ([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}
报错信息:
20230124 20:24:29.521 : FAIL : '00:01:c0:24:a3:3b' does not match '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
问题原因与修复方案
1. Should Contain的本质问题
该关键字是字面字符串匹配,而非正则匹配。你用正则表达式作为匹配目标,MAC地址字符串里自然不存在([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}这段文本,必然匹配失败。
2. Should Match Regexp的语法差异
Robot Framework基于Python的re模块实现正则匹配,不支持bash grep使用的POSIX字符类[:xdigit:],需要替换为Python正则支持的等价写法[0-9a-fA-F]。同时建议加上^和$锚定整个字符串,确保匹配完整的MAC地址。
修改后的测试用例:
Check MAC Addresses ${macaddress}= Execute Command ifconfig | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' >> macaddresses.txt ${checkmac}= Execute Command cat macaddresses.txt | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}' | head -n 1 Should Match Regexp ${checkmac} ^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$ Set Test Message ${checkmac}
内容的提问来源于stack exchange,提问作者codeforme
相关产品推荐
相关产品推荐

