robot调用关键字传参的方式是用分隔符分开不同参数,如
keyword arg1 arg2 arg3 arg4
当参数中传入了使用@符号的列表变量时,@符号会将列表展开:
@{list1}= Create List arg2 arg3 arg4
keyword arg1 @{list1} 等效于 keyword arg1 arg2 arg3 arg4
keyword arg1 @{list1} arg5 等效于 keyword arg1 arg2 arg3 arg4 arg5
 
如果不想展开则使用$形式,这里类似于Perl中的引用和解引用,对于字典变量,&和$也类似。
 
举例说明
关键字定义为
@RobotKeyword
public int lengthOfList(String str,List<String> arr){
  return str.length()+arr.size();
}
lengthOfList关键字返回的是字符串长度+列表长度
 
@RobotKeyword
public int keysCount(Map<String,Object> kvs){
  return kvs.size();
}
keysCount关键字返回key的数量
 
*** Test Cases ***
直接使用列表原始值时
  ${len1}=   lengthOfList   str   item0   item1
  log   ${len1}
  should be true   ${len1}==5
 
传入列表变量时
  @{list}=   Create List   a0   a1   a2
  ${len0}=   lengthOfList   str1   ${list}      #str:str1 arr:[a0,a1,a2]
  ${len1}=   lengthOfList   str1   @{list}     #str:str1 arr:[a0,a1,a2]
  ${len2}=   lengthOfList   @{list}         #str:a0 arr:[a1,a2]
  ${len3}=   lengthOfList   str1   str2   @{list}   a3   #str:str1 arr:[str2,a0,a1,a2,a3]
  should be true   ${len0}==${len1}
  should be true   ${len1}==7
  should be true   ${len2}==4
  should be true   ${len3}==9
 
直接传入字典原始值时
  ${len1}=   keysCount k1=v1 k2=v2 k3=v3
  log   ${len1}
  should be true   ${len1}==3
 
传入字典变量时
  &{dic}=   Create Dictionary   k1=v1   k2=v2   k3=v3
  ${len0}=   keysCount   &{dic}
  ${len1}=   keysCount   ${dic}
  ${len2}=   keysCount   k4=v4   &{dic}   k5=v5
  should be true   ${len0}==${len1}
  should be true   ${len0}==3
  should be true ${len2}==5
 
有些情况下必须使用$引用方式,如关键字形参改为如下情况
public int lengthOfList(List<String> arr1,List<String> arr2)
public int keysCount(Map<String,Object> kvs1,Map<String,Object> kvs2)

robotframework中的参数展开的更多相关文章

  1. C语言中的宏展开

    #include<stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { printf(,) ...

  2. 如何将RobotFramework中case的执行结果上传到TestLink中。

    公司的需求是: 用RobotFrameworjk框架执行case,用Testlink管理case和测试任务.需要持续统计每个版本的测试结果. 我觉得用Jenkins+Robot也行,Testlink+ ...

  3. RobotFramework自动化测试框架-Selenium Web自动化(三)关于在RobotFramework中如何使用Selenium很全的总结(下)

    本文紧接着RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)继续分享RobotFramewor ...

  4. C语言中可变参数的原理——printf()函数

    函数原型: int printf(const char *format[,argument]...) 返 回 值: 成功则返回实际输出的字符数,失败返回-1. 函数说明: 使用过C语言的人所再熟悉不过 ...

  5. 如何获取url中的参数并传递给iframe中的报表

    在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数 ...

  6. JavaScript如何获取网页url中的参数

    我们可以自定义一个公共函数来实现网页url中的参数获取,返回的是一个数组 GetUrlRequest: function () { var url = decodeURI(location.searc ...

  7. JavaScript------获取url地址中的参数

    $(document).ready(function () { //获取地址中的参数(name是字符串) function getParameter(name) { //正则表达式 var reg = ...

  8. 使用JS,获取URL中指定参数的值

    /** * 获取URL中指定参数的值 * * @param name 参数名称 * @returns */ function getQueryString(name) { var reg = new ...

  9. APPCAN开发笔记:html页面之间的参数传递:使用js获取url中的参数,以及在APPCAN中不能使用的解决方法

    用PHP的GET/POST方式来传递方式已经是司空见惯了,但是如果我的页面是一个静态的html的页面,想传递参数的时候要怎么办呢?在APPCAN的开发中我们会经常遇到这样的问题,因为所有的页面都是静态 ...

随机推荐

  1. FL studio系列教程(十):FL Studio中如何新建样本

    FL Studio中强调以样本为核心的编曲模式.样本其实就是一个小的音序片段,可以是单独的乐器或单独的打击乐,还可以是他们组合的一个小音序片段,它是我们学习编曲的最基础知识.所以本文主要为大家讲解的是 ...

  2. jenkins 安装与创建项目

    一.安装1.jenkins下载地址:https://jenkins.io/zh/ 中文版2.下载下来,是msi文件,直接安装3.本地访问,localhost:8080 二.访问 如果访问不了,以下原因 ...

  3. 【VUE】2.渲染组件&重定向路由

    1.删除多余组件,使环境赶紧 1. 整理App.vue, 删除多余内容,在template 模板区域增加一个路由占位符 router-view:渲染路径匹配到的视图组件 <template> ...

  4. MySQL给临时表分组后Max函数无效

    有道练习题"取得平均薪水最高的部门的部门编号(至少给出两种解决方案)", 为什么我给临时表分组后Max函数就无效了?不分组就可以,但是无法查询到DEPTNO,MySQL版本8.0+ ...

  5. Matlab 数值计算

    本博客记录一些简单的计算 det(A):矩阵求行列式 A=[1,2;3,4]; det(A) ans=-2; inv(A):矩阵求逆 A=[1,2;3,4]; B=inv(A) B=[-2,1;1,5 ...

  6. E - Knapsack 2 题解(超大01背包)

    题目链接 题目大意 给你一n(n<=100)个物品,物品价值最大为1e3,物品体积最多为1e9,背包最大为1e9 题目思路 如果按照平常的背包来算那么时间复杂度直接O(1e11) 这个你观察就发 ...

  7. Java基础教程——线程状态

    线程状态 JAVA定义了6种线程状态: Thread.State public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, ...

  8. zk下的kafka节点

    zk从某种程度上说是kafka的单点失效组件. /brokers:里面保存了Kafk集群的所有信息,包括每台broker的注册信息,集群上所有topic的信息等. /controller:保存了Kaf ...

  9. 「考试」联赛模拟36-39,noip晚间小测2-3

    36.1 party(CF623D) 很是鸡贼的一道题 首先要明确一点,抓人是有策略,而不是随机的,可以认为等同于按一个给定的顺序猜人,那么这时猜中的概率就只是抓住这个人的概率了 对于每一次猜测,因为 ...

  10. 冲刺随笔——Day_One

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...