【问题标题】:Robotframework String Operator INRobotframework 字符串运算符 IN
【发布时间】:2019-07-03 18:02:18
【问题描述】:

如果某个字符串在 Robotframework 中包含另一个字符串,我如何检查(短代码)? (如 Python 中的“IN”)

就像这样工作:

${aaax}=     set variable  aaa aa ba baavaa
${aaaxx}=    set variable  aaa aba baavaa
${aba}=      set variable  aba

${res1}=     run keyword and return status  should contain  ${aaax}     ${aba}
${res2}=     run keyword and return status  should contain  ${aaaxx}    ${aba}

log to console  ${EMPTY}
log to console  res1: ${res1}
log to console  res2: ${res2}

谁有更好的解决方案?像 "${aba}" IN "${aaax}" 或类似的工作?

【问题讨论】:

  • 你如何定义bettershould contain 怎么了?
  • @BryanOakley 我认为问题在于Should Contain 将无法通过测试,而 OP 只需要结果而不需要通过测试。这就是它与run keyword and return status 一起使用的原因,我认为摆脱这部分意味着“更好”的解决方案。
  • 可能您正在寻找 this 解决方案,它可能会对您有所帮助,两个选项使用 1. 列表和 2. 设置

标签: robotframework


【解决方案1】:

一种方法是使用 BuiltIn 库中的 Evaluate 关键字来简单地使用 Python in 运算符。

*** Variables ***
${aaax}     aaa aa ba baavaa
${aaaxx}    aaa aba baavaa'
${aba}      aba

*** Test Cases ***
String Contains
    ${res1}=    Evaluate    $aaax in $aba
    ${res2}=    Evaluate    $aba in $aaaxx
    Log To Console    ${res1}
    Log To Console    ${res2}

【讨论】:

  • 写成$aaaz in $aba会更好。如果{aaax}${aba} 包含单引号,您的回答将失败。
  • @BryanOakley 事实上,如果一个 ' 包含在一个字符串中,它将失败。此外,在每种情况下,在变量周围没有引号的情况下,它都会以 Evaluating expression 'aaa aa ba baavaa in aba' failed: SyntaxError: invalid syntax (<string>, line 1) 失败。所以总而言之,我想说这个解决方案仅限于使用没有单引号的字符串。
  • 就像我在其他评论中所说,如果您在 Evaluate 语句中使用 $aaaz 而不是 ${aaaz},您将避免该问题,并且此代码适用于任何字符串。跨度>
  • @BryanOakley 哦,对不起,我忽略了缺少的{,重点是缺少的引号。感谢您指出。我会修改答案。
【解决方案2】:

您也可以使用Set Variable If 关键字与in 结合使用:

${res1}=     Set Variable If   $aba in $aaax    True    False
${res2}=     Set Variable If   $aba in $aaaxx    True    False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2020-04-24
    • 2015-07-25
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多