【问题标题】:Sum of two variables in RobotFrameworkRobotFramework 中两个变量的总和
【发布时间】:2015-09-07 15:33:08
【问题描述】:
我有两个变量:
${calculatedTotalPrice} = 42,42
${productPrice1} = 43,15
我执行了
${calculatedTotalPrice} Evaluate ${calculatedTotalPrice}+${productPrice1}
我明白了
42,85,15
我该如何解决?
【问题讨论】:
标签:
python
automated-tests
robotframework
【解决方案1】:
Robot 中的默认变量是字符串。
所以你的前两个语句正在为你的变量分配像“xx,yy”这样的字符串。
然后“评估”就像 Python 那样执行你的语句。
因此,用逗号添加两个字符串将生成一个列表:
$ python
>>> 1,2+3,4
(1, 5, 4)
所以你应该使用 number variables 使用 ${} 和 . (点)作为分隔符,如本例所示:
*** Test Cases ***
sum of variables
${calculatedTotalPrice} = set variable ${42.42}
${productPrice1} = set variable ${43.15}
${calculatedTotalPrice} = Evaluate ${calculatedTotalPrice}+${productPrice1}
log to console ${calculatedTotalPrice}
这将产生:
$ pybot test.robot
==============================================================================
Test
==============================================================================
sum of variables ...85.57
==============================================================================
【解决方案2】:
在robotframework中添加两个变量而不需要调用关键字的最简单方法:
你在变量部分声明它
*** Variables ***
${A1} ${1}
${A2} ${2}
${A3} ${${A1}+${A2}}
那么${A3}的输出是:3
【解决方案3】:
Laurent 的答案几乎总是最好的课程,但如果出于某种原因您希望或要求您的 Robot 变量是包含数字的字符串,您也可以在 Evaluate 调用中将它们转换为数字:
*** Test Cases ***
Test1
${I1} = set variable 10
${I2} = set variable 5
${F1} = set variable 42.42
${F2} = set variable 57.15
${ISUM} = Evaluate int(${I1}) + int(${I2})
${FSUM} = Evaluate float(${F1}) + float(${F2})
log to console ${ISUM} ${FSUM}
这给出了输出:
Test1 ......15 99.57
【解决方案4】:
您还可以使用内联 Python 评估。
*** Variables ***
${calculatedTotalPrice} ${42.42}
${productPrice1} ${43.15}
*** Test Cases ***
Add two variables
${sum} set variable ${{ $calculatedTotalPrice + $productPrice1 }}
should be equal as integers ${sum} ${85.57}
查看文档here 了解更多选项。