Issue: My output has a line which contains the following:
“Maximum timeout: 20, Current timeout: 15”
I’ve tried created variables called patterns with the message summarized in Regex like the following:
*** Variables ***
${pattern1} ^Maximum timeout: 20
${pattern2} ^Maximum timeout: d+\,
*** TEST Cases ***
Test: MUST support this test
${output} Read Until secondary:host_name
Log to console ${output} #Should Contain ${output} ${fwSessTOsRegex}
Should Match Regexp ${pattern1} ${pattern2}
Both attempts have failed and I’m not finding good RF documentation which clearly (to me) lays out how I should use the should match regexp operator. When the test fails, it indicates the following:
“Test:MUST support this test… | FAIL |
‘^Maximum timeout: 20’ does not match ‘^Maximum timeout: d+,’”
For the life of me, I can’t figure out how to order the robot framework syntax to properly match for a variable max time out. The value could be 60, 46, 25 or some other single double digit number for Maxiumum timeout and Current timeout. Please help.
In addition to what @HelioGuilherme66 said, this is the documentation for Should Match Regexp (in case you hadn’t found it), in it’s examples it shows the escaped slash (\\) Helio mentioned, as well it has a link to more info on using Regular expressions in Robot Framework
I’ll second Helio’s recommendation to use regex101 for testing your regex patterns, it’s been very useful for me over the years.
Thank you damies13 and Helio. The problem I am having isn’t with the actual regex, it is the basic Robot syntax of how to correctly and effectively use the ‘should match regexp’ built in.
*** TEST Cases ***
Test Case: MUST support this test
${result1} Run some show command on a device
${result1} Should Match Regexp Maximum timeout: \d+, ignore_case=True
The test results in the following:
Test: MUST support standard stateful firewalling supporting sessio… …/bin/sh: show: command not found
Test: MUST support standard stateful firewalling supporting sessio… | FAIL |
ignore_case=True: ‘Maximum timeout:’ does not match ‘\d+,’
I’m ok with the regex but I’m using Robot Framework syntax incorrectly. That’s what I need help understanding how to do properly.
Update: I copied and pasted incorrect code to this chat. Updated now.
Thank you damies13 and Helio. The problem I am having isn’t with the actual regex, it is the basic Robot syntax of how to correctly and effectively use the ‘should match regexp’ built in.
*** TEST Cases ***
Test Case: MUST support this test
${result1} Run some show command on a device
${result1} Should Match Regexp Maximum timeout: \d+, ignore_case=True
The test results in the following:
Test: MUST support standard stateful firewalling supporting sessio… …/bin/sh: show: command not found
Test: MUST support standard stateful firewalling supporting sessio… | FAIL |
ignore_case=True: ‘Maximum timeout:’ does not match ‘\d+,’
I’m ok with the regex but I’m using Robot Framework syntax incorrectly. That’s what I need help understanding how to do properly.
Thank you again @Helio and @damies13 for taking the time to participate in this thread. With your help, I was able to determine how to properly string together the Robot Framework language/syntax so that my Regex is working as I expect. I’ve anonymized what I’m doing below but it is working. Problem solved. I do think it might be a bit redundant but that’s what I’ve got for now.
IMPORTANT QUESTION: Is the coloration thing you mentioned part of vs code or just that project RIDE you referred to?
*** Variables ***
${pattern1} Maximum timeout: \d+\, Current timeout: \d+.*
${pattern2} Maximum timeout: \d+\, Current timeout: \d+.*
*** TEST Cases ***
Test: MUST support this test
[. . . ]
${output} Read Until Regexp ${pattern1}
Should Match Regexp ${output} ${pattern2}
Log to console ${output}
Close SSH