我运行机器人框架测试,它失败了我每一次,甚至我得到1行左右。
下面是cat命令的终端输出:
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}
如果我直接从cmd运行它,当与SSH连接时,它工作正常,它打印一行MAC地址,这应该没问题?
但我每次都失败
以下是失败结果:
Test MAC Addresses | FAIL |
'00:01:c0:24:a3:3b' does not contain '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'
调试日志:
一个三个三个一个
编辑:
还尝试了关键字应匹配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条答案
按热度按时间h5qlskok1#
grep
使用了不同的十六进制数表示法,就像您使用:xdigit:
一样。我没有研究过,但这看起来像是正则表达式的非标准(这是我第一次看到它)。但是,我使用Python模式在https://regex101.com/中进行了实验,因为Robot Framework使用的是Python模式,并得到了以下结果:
如您所见,每个十六进制对都是由任意数字或a-f字母构成的。
这可以通过以下Robot Framework测试用例进行验证:
下面是执行日志: