一.新建List (标识符@)2f

   方法1. Create List(推荐使用,比较正式).

   方法2. (和Scalar 类似,List变量也可以)使用Set Variable来赋值

   .如下图:

rf test teardown 执行多命令 rfkill list all_大括号

运行一下:




rf test teardown 执行多命令 rfkill list all_赋值_02



二.List的元素的取值  2f

方法1. @{变量名}[index],索引值在大括号 (常用的方式)  

方法2 .${变量名[index]},索引值在大括号内

简记:@外  $内

如下图:

rf test teardown 执行多命令 rfkill list all_List_03

三.List 和 Scalar之间的相互转换


1、List变量转换成Scalar (低级转换)

使用场景:1.对于那些只接收Scalar变量参数的关键字,而你又想传List的全部值的时候或者把List当作Scalar的使用,

例如Fail关键字,他的msg这个参数只能接收Scalar变量。

rf test teardown 执行多命令 rfkill list all_大括号_04

如果你想用Fail,把f这个变量的值都打出来,如下图把@装换成$即可

rf test teardown 执行多命令 rfkill list all_赋值_05

运行结果:

rf test teardown 执行多命令 rfkill list all_RF自动化测试基础_06


但是下面这样写是肯定会报错的(msg这个参数只能接收Scalar变量)。

rf test teardown 执行多命令 rfkill list all_RF自动化测试基础_07

报错信息为 Keyword 'BuiltIn.Fail' expected 0 to 1 arguments, got 3.

2. Scalar变量转换成List (高级转换)

使用场景:对于返回值是List的关键字,如果你给要赋值的变量写的是Scalar的,它会自动把他变成List的。

还是上面这个例子,创建列表时我们把@{f}改成${f},此时s{f}就装换成了list

rf test teardown 执行多命令 rfkill list all_大括号_08


注意:高级转换转换限制,针对没被赋值过值的${f}, 系统会默认${f}是@{f}的Scalar形式,

如果${f}被赋值过是什么情况呢?

看一下eg1:报错

 

rf test teardown 执行多命令 rfkill list all_RF自动化测试基础_09

 这样写的话运行就会报错:Non-existing variable '@{f}'.

那这时候${f}有什么用呢?除了前面介绍的作为Scalar型变量,值是所有元素,还可以根据index(在大括号内)直接获得某个元素。

例如:

rf test teardown 执行多命令 rfkill list all_RF自动化测试基础_10

运行结果:

rf test teardown 执行多命令 rfkill list all_大括号_11

eg2 ,虽然系统会默认${f}是@{f}的Scalar形式,但当${f}被赋值过的情况下,无法转化为list,无法改变原有的$变量的值。

看看例子:

rf test teardown 执行多命令 rfkill list all_大括号_12

${f}的值会是原来的值 4

rf test teardown 执行多命令 rfkill list all_大括号_13

,

所以,这里要注意,尽量不要让Scalar和List的变量重名,特别是你要用作不同的用途的时候。

一个重要的影响就是会导致下面的List元素获取出现越界的情况。

四.  二维List (以List作为元素的List) 的创建与取值

rf test teardown 执行多命令 rfkill list all_赋值_14

运行结果:


rf test teardown 执行多命令 rfkill list all_大括号_15


如果log后面只写${f[1]},那么得到的结果如图:


rf test teardown 执行多命令 rfkill list all_赋值_16