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. macbook上安装虚拟机软件如何操作?

    很多用户都不太熟悉苹果系统,用惯了Windows之后再过渡到MacOS难免会有些不习惯.为了使我们又可以用回那些熟悉的Windows应用,比较常见的办法就是安装macbook虚拟机.下面小编就教大家一 ...

  2. Beta冲刺随笔——Day_Nine

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

  3. C++里面this关键字的用法和功能

    1.this指针的用处 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象 ...

  4. 【2020.12.02提高组模拟】A组反思

    55,rk47 T1 赛时先想了\(trie\),想到不一定是前缀,然后就放弃转为打暴力 得分:\(RE22\) 正解是只用判断\(i\)与\(i+1\)的关系,那么只有两种情况,判断一下然后\(dp ...

  5. 初学者刚学c++在定义类时只有成员变量易犯的错误

    ------------------------ #include<iostream> using namespace std;//c++的命名空间 class circle { publ ...

  6. (数据科学学习手札99)掌握pandas中的时序数据分组运算

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 我们在使用pandas分析处理时间序列数据 ...

  7. jxl导出excel小demo

    1.首先在pom文件加入jar包 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <art ...

  8. REHの收藏列表

    搬运自本人的AcWing,所以那里的文章会挺多. 友链(同类文章) :bztMinamoto 世外明月 mlystdcall 新人手册:AcWing入门使用指南 前言 有看到好文欢迎推荐(毛遂自荐也可 ...

  9. Codeforces Edu Round 48 A-D

    A. Death Note 简单模拟,可用\(\%\)和 \(/\)来减少代码量 #include <iostream> #include <cstdio> using nam ...

  10. 第三方模块Gulp

    1.第三方模块Gulp 基于node平台开发的前端构建工具. 将机械化操作编写成任务,想要执行机械化操作时执行一个命令,命令任务就能自动执行了.提高开发效率. 1)Gulp使用 ① 使用npm ins ...