robotframework 变量的使用
1、在判断中使用
例如:Set Variable If就是一个典型的例子。再例如下面的:
Run Keywork If | ‘${val2}==’abcd’ | log | efgh |
---|---|---|---|
这个例子表示:如果说${val2}和abcd字符串相等,那么就运行log后面的关键字,打印efgh
运行结果如下:
2、字符串使用
简单的一种方法就是字符串的链接,例如:
log | 0123${val2}efgh |
---|---|
运行结果如下:
还有一种就是字符串的截取例如:
log | ${val2[2]} |
---|---|
log | ${val[0:3] |
注意:“[]”里写的是字符串的index索引位置、[0:3]表示index=0到3的截取
运行结果如图:
3、参与运算
在参与运算的时候需要用到关键字:Evaluate
例如:
${cal1} | Set Variable | 123 |
---|---|---|
${cal2} | Evaluate | ${cal1}+1 |
这里跟变量${cal1}赋值为123,然后Evaluate让它+1
结果如图:
但是某些时候你的变量值是字符串的时候,就需要使用强制转换函数int,例如:
${cal1} | Set Variable | ‘123’ |
---|---|---|
${cal2} | Evaluate | int(${cal1})+1 |
结果如图:
List变量的使用
List变量赋值
List和Scalar类似都可以使用Set Variable来赋值,但是如果使用了Set Variable来赋值的话,会使得把一个List变量或者多个Scalar变量形成的List转换给一个Scalar变量。因此如果你想得到一个真正的List变量。更多的推荐使用:Create List来创建
例如:
@{val3} | Set Variable | 1 | 2 | 3 |
---|---|---|---|---|
@{listVal3} | Create List | 3 | 2 | 1 |
结果如图所示:
变量使用
当我们使用Ctrl+空格键调用出Content Assitant的时候,通常会展示出该方法或者该关键字的使用方法。如图:
此时关键字中有两个参数:name,*args。此时name就代表可以传参类型是Scalar类型的参数,*args代表的是可以传递List变量。因此由此可以见得:带*号是指可以传递List类型参数
List元素值的获取方式一般有两种,正常的获取方式是:@{变量名}[index],index就是索引值
另外一种:${变量名[index]},里面的index也是索引值,如果说是多维list,如果说取单个元素就一个[],如果要取多维的话,有几维就几个[]。
1.一维List
@{userList} | Create List | a | b | c |
---|---|---|---|---|
log | @{userList}[1] | |||
log | ${userList[1]} |
运行结果如图:
2.多维List
@{listA} | Create List | 1 | 2 | |
---|---|---|---|---|
@{listB} | Create List | 3 | 4 | |
@{listC} | Create List | ${listA} | $listB | 5 |
log | @{listC[1]}[1] |
运行结果如图:
变量转换
1、List转换成Scalar
@{list1} | Create List | abcd | EFGH |
---|---|---|---|
log | ${list1} |
运行结果:
2、Scalar变量转换成List
${list1} | Create List | abcd | EFGH |
---|---|---|---|
log | =@{list1}= |
运行结果:
3、转换限制
注意在对变量类型进行转换过程中如果说目标变量没有进行初始化过或者赋值过,那么就可以进行类型转换,但是如果目标变量已经初始化或者赋值那么就无法进行变量的类型转换。
4、Dictionary变量
Dictionary变量每一个元素都是以Key、Value形式存放。比如:1
{key1:val1,key2:val2} # 其中一个key对应一个value。key不能重复出现
5、对象变量
对象变量是在接口测试中Request测试库中出现。例如${return}是接口返回的对象。一般我们是获取该对象中某个属性值。例如:1
2${return.STATUS} # 获取return对象中的返回状态值
${return.CONTENT} # 获取对象内容