如何使用 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}'    ...