linux 机器人框架MAC地址测试和确认

deyfvvtc  于 2023-01-25  发布在  Linux
关注(0)|答案(1)|浏览(166)

我运行机器人框架测试,它失败了我每一次,甚至我得到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}'
h5qlskok

h5qlskok1#

grep使用了不同的十六进制数表示法,就像您使用:xdigit:一样。我没有研究过,但这看起来像是正则表达式的非标准(这是我第一次看到它)。
但是,我使用Python模式在https://regex101.com/中进行了实验,因为Robot Framework使用的是Python模式,并得到了以下结果:

([\d|[a-f]{1,2}:){5}([\d|[a-f]{1,2})

如您所见,每个十六进制对都是由任意数字或a-f字母构成的。
这可以通过以下Robot Framework测试用例进行验证:

*** Test Cases ***
Test RegEx
    ${input}=    Set Variable    00:01:c0:24:a3:3b
    ${regex}=    Set Variable    ([\\d|[a-f]{1,2}:){5}([\\d|[a-f]{1,2})
    ${result}=    Should Match Regexp    ${input}    ${regex}

下面是执行日志:

Starting test: Test Timeouts.Test RegEx
20230124 21:22:23.128 :  INFO : ${input} = 00:01:c0:24:a3:3b
20230124 21:22:23.130 :  INFO : ${regex} = ([\d|[a-f]{1,2}:){5}([\d|[a-f]{1,2})
20230124 21:22:23.132 :  INFO : ${result} = ['00:01:c0:24:a3:3b', 'a3:', '3b']
Ending test: Test Timeouts.Test RegEx

相关问题