RobotFramework的增量

Int*_*oza 2 for-loop increment robotframework

我正在尝试根据另一个变量的状态在机器人框架上运行FOR循环.

${STATUS1}=   Run Keyword And Return Status   Should Be Equal As Strings   ${CELLVALUE}   ${EXPECTEDVALUE}
    \   ${COUNT}=   Set Variable If  '${STATUS1}' == 'True'   ${COUNT}+1
    \   ...   '${STATUS1}' == 'False'    ${COUNT}+0
Run Code Online (Sandbox Code Playgroud)

但我获得的是'''0'+0'+0'+1或类似的,即使我使用Run关键字IfEvaluate不是set var,我试图转换为整数但没有任何反应,我不能将其转换为整数或数字.有什么建议?提前致谢!

Bry*_*ley 5

它看起来像你只是想增加${COUNT}是否${CELLVALUE}等于${EXPECTEDVALUE}.使用Set Variable if可以非常轻松地完成

如果您知道${CELLVALUE}并且${EXPECTEDVALUE}具有相同的内部类型(例如:字符串或整数),并且您正在使用机器人框架2.9或更高版本,则可以这样写:

${COUNT}=    Set variable if    $CELLVALUE == $EXPECTEDVALUE 
...   ${COUNT+1}    ${COUNT}
Run Code Online (Sandbox Code Playgroud)

这假定它${COUNT}被初始化为一个整数值,您可以通过为其赋值来完成${0}

如果您不知道类型,无法保证类型,或者使用旧版本的机器人,您可以使用三引号字符串将值强制转换为字符串:

${COUNT}=    Set variable if    '''${CELLVALUE}''' == '''${EXPECTEDVALUE}'''    
...    ${COUNT+1}    ${COUNT}
Run Code Online (Sandbox Code Playgroud)

当然,您可以像在示例中一样使用"运行关键字"和"返回状态",然后比较状态.这似乎是一个不必要的额外步骤,但它可能在您的实际测试中有意义.

关键是,你可以使用Set变量if扩展变量语法来解决这个问题.



注1:使用Set变量if,提供两个值.如果表达式为true,则分配第一个值;如果值为false,则分配第二个值.第二个值是原始变量,意味着它不会被更改.如果未提供第二个值,则变量将设置为None.

注2:将表达式放在花括号内(例如:扩展变量语法的${COUNT+1}规则4中记录.

注3:从机器人框架2.9开始,使用简化语法在评估命名空间中提供变量$varname.因此,机器人变量${CELLVALUE}可以在python表达式中使用$CELLVALUE.这在"BuiltIn库文档中的评估表达式 "一节中介绍.