如何使用 Robot Framework 检查 'Result' 对象中是否存在子字符串?
How to check if a substring exists inside a 'Result' object with Robot Framework?
我正在运行 Robot Framework 中进行以下测试:
*** Settings ***
Documentation This initializes testrun.robot
Library Process
Library OperatingSystem
Library XML
Library Collections
Output Is A Valid XML File Against JATS format
Start Process xmllint --dtdvalid http://jats.nlm.nih.gov/archiving/1.1d3/JATS-archivearticle1.dtd ./output/nlm/out.xml shell=True
${result}= Wait For Process timeout=45 secs
Log ${result.stdout}
Log ${result.stderr}
Run Keyword Unless '${result.stderr} == ${EMPTY}' Should Contain ${result.stderr} element xref: validity error : IDREFS attribute rid references an unknown
变量 ${result.stderr} 是一个包含子字符串 'element xref: validity error : IDREFS attribute rid references an unknown' 的字符串。据我所知,我没有处理任何空格错误或引用问题,尽管我可能是错的。 (我已经摆弄了一段时间了。)
感谢您的帮助!
编辑:Robot Framework 生成的日志告诉我进程已经完成(这就是我知道 result.stderr 包含的内容的方式。)
考虑这个陈述:
Run Keyword Unless '${result.stderr} == ${EMPTY}' ...
关键字永远不会 运行 因为你不是在比较两个变量,你只是检查字符串文字字符串 '${result.stderr} == ${EMPTY}'
是否不为空(它不是,因为它有 28 个字符).
这与您在 python 中执行的操作相同:
if len('${result.stderr} == ${EMPTY}') > 0:
...
您需要将单引号分别放在每个变量周围,以便将有效表达式传递给 if 语句,而不是 看起来 像有效表达式的字符串:
Run Keyword Unless '${result.stderr}' == '${EMPTY}' ...
我正在运行 Robot Framework 中进行以下测试:
*** Settings ***
Documentation This initializes testrun.robot
Library Process
Library OperatingSystem
Library XML
Library Collections
Output Is A Valid XML File Against JATS format
Start Process xmllint --dtdvalid http://jats.nlm.nih.gov/archiving/1.1d3/JATS-archivearticle1.dtd ./output/nlm/out.xml shell=True
${result}= Wait For Process timeout=45 secs
Log ${result.stdout}
Log ${result.stderr}
Run Keyword Unless '${result.stderr} == ${EMPTY}' Should Contain ${result.stderr} element xref: validity error : IDREFS attribute rid references an unknown
变量 ${result.stderr} 是一个包含子字符串 'element xref: validity error : IDREFS attribute rid references an unknown' 的字符串。据我所知,我没有处理任何空格错误或引用问题,尽管我可能是错的。 (我已经摆弄了一段时间了。)
感谢您的帮助!
编辑:Robot Framework 生成的日志告诉我进程已经完成(这就是我知道 result.stderr 包含的内容的方式。)
考虑这个陈述:
Run Keyword Unless '${result.stderr} == ${EMPTY}' ...
关键字永远不会 运行 因为你不是在比较两个变量,你只是检查字符串文字字符串 '${result.stderr} == ${EMPTY}'
是否不为空(它不是,因为它有 28 个字符).
这与您在 python 中执行的操作相同:
if len('${result.stderr} == ${EMPTY}') > 0:
...
您需要将单引号分别放在每个变量周围,以便将有效表达式传递给 if 语句,而不是 看起来 像有效表达式的字符串:
Run Keyword Unless '${result.stderr}' == '${EMPTY}' ...