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

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

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

 

我搞了个RobotFramework自动化测试公众号

欢迎大家扫一下加入。

这里有最新的安装指南,本文里的版本都比较旧了。

这一讲我们重点来介绍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,要想清楚你到底要哪层的,不要写少了或者写多了。

 

Dictionary这次就不讲了,因为要另外加载库进来,所以后面讲到那个测试库的时候再介绍吧。

下一讲的内容计划是判断分支(IF——ELSE IF——ELSE)、循环(FOR——EXIT FOR LOOP),敬请期待~~

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
【Robotframework】列表List的常⽤操作 1. Create List # 新建⼀个list变量 @{list} create list aa bb # 为list追加数据 同Append To List @{list} create list @{list} cc 打印list时,使⽤log many:log many @{list} 若⽤log打印,则写成:log ${list} 打印string时,使⽤log: log ${string} 以下关于list的操作类关键字,是在collections库中的,使⽤前,需要引⼊该库 2 Append To List-为list追加数据 ⽐如create list中的⽰例,也可以使⽤: # 新建⼀个list变量 @{list} create list aa bb # 为list追加数据 同Append To List Append To List @{list} cc 3 Get Slice From List-切⽚ 可以获取list的某⼀段⼦list,从两端截取或从中间截取 ⽰例: #list的下标从0开始 @{list} Create List lilei hanmeimei liming liliang liming # 获取从index=1及之后的数据 ${fromlist} Get Slice From List ${list} 1 # 获取从index=1~2的数据,不包括第3个 ${fromtolist} Get Slice From List ${list} 1 3 4 Remove Duplicates-去重 ⽰例: @{list} Create List lilei hanmeimei liming liliang liming # list去重并检查不包含重复数据 ${listnew} Remove Duplicates ${list} List Should Not Contain Duplicates ${listnew} 在log中会打印出来去掉了⼏个重复数据: 20201015 18:46:47.647 : INFO : 1 duplicate removed. 5 List Should Contain Sub List-包含⼦list ⽰例: @{list} Create List lilei hanmeimei liming liliang liming @{sublist} Create List lilei hanmeimei # 是否包含⼦list List Should Contain Sub List ${list} ${sublist} 6 List Should Not Contain Duplicates-判断不存在重复 ⽰例,去重后,list就不存在重复数据了,最后⼀⾏可执⾏通过: @{list} Create List lilei hanmeimei liming liliang liming ${listnew} Remove Duplicates ${list} List Should Not Contain Duplicates ${listnew} 7 Lists Should Be Equal-判断list相等 注意:@{list}是robot提供的语法,python并没有@{},只有${},所以要⽐较两个@{list},需要把@{list},直接写成英⽂dollar ${list}进 ⾏对⽐ ⽰例: @{list} Create List lilei hanmeimei liming liliang liming Remove From List ${list} 0 @{list1} Create List hanmeimei liming liliang liming Lists Should Be Equal ${list} ${list1} Remove Values From List ${list} liming @{list2} Create List hanmeimei liliang Lists Should Be Equal ${list} ${list2} 如果list转换成了string,也可以使⽤should be equal来做相等判断 8 Remove (Values) From List-删除list中某个值 Remove From List:按照index删除,⼀次删除1个 Remove Values From List:按照value值删除,⼀次可删除多个 ⽰例如2.6 9 Sort List–升序排序 对list做升序排序,⽰例: @{list} Create L
根据提供的引用内容,错误信息"/usr/bin/ld: /rfs/drive-qnx/lib-target/libvulkan.so: error adding symbols: file in wrong format"表明在链接过程中出现了文件格式错误。这可能是由于链接器尝试将错误格式的文件添加到可执行文件中导致的。 解决此问题的方法是确保链接器使用正确的文件格式进行链接。您可以尝试以下方法来解决这个问题: 1. 检查文件格式:首先,您需要确认"/rfs/drive-qnx/lib-target/libvulkan.so"文件的格式是否正确。您可以使用file命令来检查文件的格式。例如,运行以下命令: ```shell file /rfs/drive-qnx/lib-target/libvulkan.so ``` 这将显示文件的格式信息。确保文件的格式与您的系统兼容。 2. 更新链接器路径:如果文件格式正确,但链接器无法找到正确的文件路径,您可以尝试更新链接器的路径。您可以使用以下命令来更新链接器路径: ```shell export LD_LIBRARY_PATH=/rfs/drive-qnx/lib-target:$LD_LIBRARY_PATH ``` 这将将"/rfs/drive-qnx/lib-target"添加到链接器的搜索路径中。 3. 检查依赖项:如果文件格式正确且链接器路径正确,但仍然出现错误,可能是由于缺少依赖项导致的。您可以使用ldd命令来检查文件的依赖项。例如,运行以下命令: ```shell ldd /rfs/drive-qnx/lib-target/libvulkan.so ``` 这将显示文件所依赖的其他库。确保所有依赖项都已正确安装并可访问。 请注意,这些方法可能因系统配置和环境而有所不同。根据您的具体情况,可能需要采取其他措施来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值