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. guitar pro系列教程(二十七):Guitar Pro教程之理解记谱法

    前面的章节我们讲解了很多关于Guitar Pro'的功能使用,今天小编还是采用图文结合的方式为大家讲解它的理解记谱法,对于很多新人来说,在我们看谱之前,我们肯定要先熟悉他的一些功能如何使用以及一些关于 ...

  2. Java基础教程——BigDecimal类

    BigDecimal类 float.double类型的数字在计算的时候,容易发生精度丢失. 使用java.math.BigDecimal类可以解决此类问题. 前面讲过Math类,现在的BigDecim ...

  3. framework中的sentinel

    引入切面: 切面+sentinel-web-servlet private void initDataSource() { String zkUrl = zaSentinelConfig.getDat ...

  4. spring与分布式事务

    转载:https://www.cnblogs.com/qianjun2017/p/8349829.html 转载:https://blog.csdn.net/jaryle/article/detail ...

  5. Kafka分布式查询引擎

    1.概述 Kafka是一个分布式消息中间件系统,里面存储着实际场景中的数据.Kafka原生是不支持点查询的,如果我们想对存储在Topic中的数据进行查询,可能需要对Topic中的数据进行消费落地,然后 ...

  6. npm中的命令指令的参数的 简写介绍

    在使用npm时,使用的的缩写 install: 缩写为i,表示安装. --global: 缩写为-g,表示:全局标识,可以在任意目录中使用该工具.全局安装. --save: 缩写为-S,表示安装的包将 ...

  7. Steps 组件的设计与实现

    NutUI 组件源码揭秘 前言 本文的主题是 Steps 组件的设计与实现.Steps 组件是 Steps 步骤和 Timeline 组件结合的组件,在此之前他们是两个不同的组件,在 NutUI 最近 ...

  8. Beta冲刺——用户测试报告

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

  9. 部署 Prometheus 和 Grafana 到 k8s

    在 k8s 中部署 Prometheus 和 Grafana Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k ...

  10. python核心高级学习总结1---------*args和**kwargs

    *args 和 ** kwargs 的用法 首先,这两者在用法上都是用来补充python中对不定参数的接受. 比如下面的列子 def wrappedfunc(*args, **kwargs): pri ...