*** Test Cases ***
test
${t} create list abcde fghijk
:FOR ${x} IN ${t}
\ log ${x}
然而,你会发现这样执行是错的,并没有吧${t}给迭代出来。正确的姿势应该是这样:
*** Test Cases ***
test
${t} create list abcde fghijk
:FOR ${x} IN @{t}
\ log ${x}
第一个脚本中,For循环迭代的是一个标量,也就是一个整体,执行结果就会把整个list打印出来,而第
二个脚本中,迭代的是一个链表,也就是分散的个体,所以在循环的时候会被全部迭代出来打印。
再看一个直观的例子。
*** Settings ***
Library Collections
*** Variables ***
@{t} 1 2 3
*** Test Cases ***
test
log list @{t}
上面的例子看脚本没毛病,直接打印定义的list变量@{t},但是执行的时候你会发现,执行失败了,报
错Keyword 'Collections.Log List' expected 1 to 2 arguments, got 3.,这里的@{t}使用的是链表,所
以相当于这个位置你给了1,2,3三个参数,而log list方法只能接受两个参数,所以这里报错了。
变量标识
${}这个表示定义一个变量,当然,在定义数字的时候,加上这个标识才是数值类型,比如:
*** Test Cases ***
test
${a} set variable ${4}
${b} set variable 4
其中a获得的是数字4,b获得的是字符串4。在json中的提现就是{“a”: 4, "b": "4"}
布尔值真假用的是${true}和${false}
空格用的是${SPACE}
空变量用的是${EMPTY}
变量扩展
RobotFramework的变量可以很好的支持扩展,使用得当可以事半功倍。
变量拼接
*** Test Cases ***
test
${ip} set variable 192.168.9.1
${a} set variable p
log ${i${a}}
====> 192.168.9.1
上面的拼接方式中,RobotFramework会首先解析${a}这个变量,然后变量就变成了${ip},最终结果
打印的就是${ip}.
字典列表元素值的获取
字典取值示例
*** Test Cases ***
test
${a} create dictionary a=1 b=2
log ${a['a']}
====> 1
RobotFramework的字典值的获取方式非常简单,跟Python是一个套路,
列表取值示例
*** Test Cases ***
test
${a} create list a b
log ${a[0]}
====> a
当然,字典和列表是可以串在一起取值的,比如这样:
*** Test Cases ***
test
${b} create dictionary a=1
${c} create dictionary b=2
${a} create list ${b} ${c}
log ${a[0]['a']}