• RFS的web自动化验收测试——第12讲 List Variables-List变量及其用法


    引言:什么是RFS——RobotFramework+Selenium2library,本系列主要介绍web自动化验收测试方面。

    ( @齐涛-道长 新浪微博)

     

    这一讲我们重点来介绍List Variables-List变量及其用法。

    一、List变量及其用法

     在我们前面几篇文章里用到了很多List变量,相信以后各位也会碰到需要使用的地方。

    1、List变量赋值

    和Scalar类似的赋值,除了用Set Variable还可以用Create List。

     

    运行一下:

     

     

    2、List变量使用

    在使用上要注意看关键字的参数到底是Scalar的还是List,区别就是看变量名前面是否有 * (星号),如图:

    这个关键字的name就是支持传入Scalar型的参数,*args就是支持可以传入List型值的。

    所谓List型值其实是说支持多个值,即不确定个数的,List-like一样的值,如下图的2、3行:

     

     

    当然,并不是说没有星号的就不能用List的,只要是多个变量就可以用List传值。

    像Log这个关键字,他有2个Scalar型的传入参数,如果我想传List也是可以的,但是必须是一个有2个元素的List,因为Log的第二个参数有默认值,所以如果你传入1个元素的List也是可以的,但是如果传入3个元素的List,那么就会报错了。

    你可以写成上面这样,但是我并不推荐这种做法,这里只是为了讲解List的作用而做的示范。

     

    综上,对于有多个参数的关键字,你可以按照需要传入多个Scalar变量,也可以传入List变量,根据你自己的需要选择合适的方式。

     

    二、变量转换

    之前提过了Scalar变量用 $ 作为标识符,List型变量用 @ 作为标识符,而且他们是可以进行转换的,理论上可以互相进行转换,但是也有一点限制。

    1、List变量转换成Scalar

    这种转换的效果是把整个List变成一个Scalar,我觉得作用主要是对于那些只接收Scalar变量参数的关键字, 而你又想传List的全部值的时候,或者其他你需要的把List当作Scalar的情况下使用。例如Fail关键字,他的msg这个参数只能接收 Scalar变量。

     

    如果你想用Fail,把f这个变量的值都打出来,下面这样写是肯定会报错的。

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

    那么我们转换一下,这样写就不报错了。

    运行结果:

    2、Scalar变量转换成List

    其实以前介绍用户关键字的时候也演示过,对于返回值是List的关键字,如果你给要赋值的变量写的是Scalar的,他会自动把他变成List的。

    还是上面这个例子,我们把@{f}改成${f}

    这样也是OK的。

    3、转换的限制

    但是,我前面提到了,转换是有一点限制的。

    首先,上一讲提到了,变量要进行赋值(类似于初始化)之后才能使用,如果没有进行过赋值的RIDE里会有颜色提示,用一个前面的图

    图中的紫色${f}就是提示你他没有进行过赋值,此时而系统会默认他就是@{f}的Scalar形式,这个可以看上面的执行结果。

    那么这个限制就在Scalar转换成List的地方,系统会默认${f}是@{f}的Scalar形式,但是他并不会默认@{f}是${f}的list形式,即使${f}已经是list了。

    看一下例子:

     

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

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

    例如:

    运行结果:

    看完上面的限制之后,还要补充一点,系统会默认${f}是@{f}的Scalar形式,这个也是有限制,必须是${f}没有被赋值过的情况,如果${f}被赋值过是什么情况呢?

    看看例子:

    你觉得${f}会是什么值呢?

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

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

    三、List元素的获取

    List元素的获取只有一种方式,无论是一维List还是二维List,都是用${变量名[index]},就是用$的变量,在变量名后面加上方括号,里面是序号。

    1、一维List的例子。

    运行:

    2、二维List的例子。

    运行结果:

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

    总之,就是用方括号来表明你需要的元素,如果是多维List,要想清楚你到底要哪层的,不要写少了或者写多了。

  • 相关阅读:
    消除共模干扰的方法
    C#模拟键盘事件
    获取本地IP V4 出现::1
    生成ssh密钥
    苹果应用商店DNS修改加快下载速度
    模算术 modular arithmetic
    有限域和质数的幂
    rere
    test
    图信号处理进行大数据分析
  • 原文地址:https://www.cnblogs.com/zhuifengji/p/4602578.html
Copyright © 2020-2023  润新知