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关键字If而Evaluate不是set var,我试图转换为整数但没有任何反应,我不能将其转换为整数或数字.有什么建议?提前致谢!
它看起来像你只是想增加${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库文档中的评估表达式 "一节中介绍.