RobotFramework自动化测试框架(2)- RobotFramework语法
- RobotFramework测试用例是由四部分组成的,下面就从这四个部分简单介绍语法:
- 关键字表 *** Keywords ***
- 设置表 *** Settings ***
- 变量表 *** Variables ***
- 测试用例表 *** Testcases ***
1、关键字表
关键字表是干什么用的?
组合已有的关键字(包括库关键字和其他用户关键字)来创建新的高层次的关键字,也就是用户关键字。因此,关键字表是存放用户关键字的。
用户关键字的组成:
1、用户关键字的名称
应该具备描述性,使用很长的关键字名称也是可以的。
2、用户关键字的设置项
- 用户关键字的文档:通过 [Documentation] 设置。在关键字文档的开始部分使用 *DEPRECATED* 可以标记该用户关键字已经不建议使用,如果使用则会触发一个警告。
- 用户关键字的标签:通过 [Tags] 设置。带 robot- 前缀的标签名将作为保留。普通用户需避免使用 robot- 前缀的标签。
- 用户关键字的参数:通过 [Arguments] 设置。参数名称的语法格式和变量一样,如 ${arg}。
下面是用户关键字的参数说明:
- 首先是 [Arguments],后面是声明的参数名称。每个参数占一个单元格,参数名称的语法格式和变量一样。
- 当关键字被调用时,需要传递和此处定义相同数量的参数。
- 参数的名称推荐使用小写字母作为名称,如:${my_arg},${my arg} 或 ${myArg}。
- 为参数添加默认值只需要在参数名后面跟上等号(=),然后跟上默认值即可。例如 ${arg}=default。
- 可以为多个参数指定默认值,指定默认值的参数必须跟在普通的位置参数后面。
- 默认值的语法是对空格敏感的。等号 = 前面不允许有空格,而等号后面的空格则被视作默认值的一部分。
- 只需在关键字的参数签名中使用列表变量如 @{varargs} 作为参数声明。
- 同时不定数量的参数可以和默认值参数混用,前面的参数先进行匹配,列表参数最终接受所有剩余的参数,数量可以是0个到任意个。
- 只需在参数列表的最后,在位置参数和任意数量参数的后面,使用字典变量,如 &{kwargs}。
- 当该关键字被调用时,前面没有被匹配的 命名参数 都会传递给该参数。
- 用户关键字返回值:通过 [Return] 设置。
最常见的情况是用户关键字返回一个值,并且赋值给一个标量变量。直接将返回值放在 [Return] 设置后面的单元格内。
用户关键字还可以返回多个值,这些值可以一次性赋给多个标量、或者一个列表变量、或者两者混合。多个值只需依次跟在 [Return] 后面的单元格中即可。
- 用户关键字的 Teardown:通过 [Teardown] 设置 。
teardown 在当前关键字执行失败时也会被调用。此外,teardown 内的所有步骤都会执行到,即使其中某个步骤失败。不过,teardown 的失败会导致当前用例执行失败,并且该用例余下的步骤将不再执行。
例子:
- *** Keywords ***
- f1
- [Documentation] Demo
- [Tags] one two
- [Arguments] ${a} ${b}=default value
- Log ${a}+${b}
- [Return] ${a}
- [Teardown] Log ${b}
3、调用的其他关键字
也就是,已有的关键字(包括库关键字和其他用户关键字)。
2、设置表
作用:
导入普通标准库:Library
导入远程库:Library
导入资源文件:Resource
导入变量文件:Variables
导入扩展测试库:Library
- *** Settings ***
- Library Selenium2Library
- Library OperatingSystem
- Library Remote http://200.200.131.126:8080/RPC2 WITH NAME a1
- Resource a.robot
- Variables ../robot_xml.py
- Library b
3、变量表
作用:
创建变量
变量的分类:
注意:变量是不区分大小写的,同时,其中的下划线和空格也会被忽略。
- 标量变量:${SCALAR}。$:表示标量变量的标识符,{ }:一对花括号,SCALAR:变量名。
- 列表变量:@{LIST}。@:表示列表变量的标识符,{ }:一对花括号,LIST:变量名。
- 字典变量:&{USER}。&:表示字典变量的标识符,{ }:一对花括号,USER:变量名。
- *** Variables ***
- ${aa1} 2
- ${NAME} Robot Framework
- @{NAMES2} @{NAME} Seppo
- &{MANY} first=1 second=${2} ${3}=third
4、测试用例表
作用:
编写测试用例
构成:
1、测试用例名称:
位于测试用例表格的第一列。一个用例始于测试用例名,直到遇到下一个用例名,或者到表格的结束。
2、关键字名称:
一般情况下位于第二列。不论关键字名称位于第几列,跟在其后的列包含的是要传递给该关键字的参数。
3、测试用例配置项:
每个测试用例都可以有自己的相关设置。设置项的名称使用方括号([])括起来,以区别于关键字。
下面列出了可设置的配置项:
测试用例文档([Documentation])
为用例设置一段文档说明。这个说明会显示在命令行的输出中,以及后续的测试日志和测试报告中。
测试用例标签([Tags])
一个测试套件中的用例标签必须唯一。
测试用例前(后)置条件([Setup] / [Teardown])
- 有两种设置方法:
- 在测试用例文件的设置表中设置Test Setup 和 Test Teardown。这种情况下,该文件中的所有测试用例都会使用该前(后)置条件。
- 对单个测试用例通过设置 [Setup]、[Teardown]设置前(后)置条件。
- 注意事项:
- 在Robot Framework中,setup和teardown都是带参数的普通关键字而已,并且各自只能指定一个关键字。如果涉及到多个步骤,只能创造一个更高层的 user keywords。
- Setup在测试用例之前执行,Teardown在测试用例之后执行。Teardown在以下两个方面比较特殊:首先,它在测试用例执行失败的时候也会被执行,所以常常用来作为测试环境的清理工作。其次,teardown中所有的关键字都会被执行,哪怕其中有的执行失败。
- 如果用例单独设置了 [Setup] 或 [Teardown],则会覆盖文件中的 Test Setup 或 Test Teardown。进而可以为 [Setup] 或 [Teardown]设置空值(空格或 NONE),表示当前用例没有前(后)置条件,即使测试文件设置表中已有设置。
测试用例模板([Template])
- 有两种设置方法:
- 在测试用例文件的设置表中设置 Test Template。这种情况下,该文件中的所有测试用例都会应用该模板。
- 对单个测试用例通过设置 [Template] 指定一个模板。
- 注意事项:
- 如果一个模板用例的内容有多行数据,该模板会逐行应用于这些数据。也就是说,该模板关键字会被调用多次,每次使用其中一行的数据作为参数。如果用例单独设置了 [Template],则会覆盖文件中的 Test Template。进而可以为 [Template] 设置空值(空格或 NONE),表示当前用例没有模板,即使测试文件设置表中已有设置。
- 模板测试用例在执行过程中,如果有某一轮次执行失败也不会影响下面轮次继续执行。
- 当模板中使用了嵌入式的参数,模板关键字中参数的个数必须和传入的参数个数一致,但是参数的名称不一定非要和原关键字保持一致。甚至还可以添加或减少参数。
需要注意的是:
在测试用例中使用的变量,必须声明。
- *** Testcases ***
- Test1
- [Documentation] Demo2
- [Tags] ooo
- [Setup] ${aa1}
- [Teardown] ${mn}
- [Timeout] 20
- Should Be Equal As Integers ${aa1} 2
RobotFramework自动化测试框架(2)- RobotFramework语法的更多相关文章
- RobotFramework自动化测试框架(1)- RobotFramework简介
对于RobotFramework自动化测试框架,我这里会从三个单元进行阐述,希望能对你有帮助. RobotFramework简介 RobotFramework是什么? Robotframework 是 ...
- RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)
好久没有继续分享关于自动化测试相关的东西了,自动化在现今的测试领域已经越来越重要了,大部分公司在测试岗位招聘中都需要会相关的自动化测试知识.而 RobotFramework自动化测试框架 是自动化测试 ...
- RobotFramework自动化测试框架-移动手机自动化测试AppiumLibrary介绍
在使用AppiumLibrary库时,需要预先安装好Appium自动化工具,Appium官网地址为:http://appium.io/ Appium的GitHub地址为:https://github. ...
- RobotFramework自动化测试框架-DatabaseLibrary库的使用(对数据库的操作)
在自动化过程中,我们经常需要连接不同的数据库,并且对数据库进行很多不同的操作,RobotFramework中,提供了DatabaseLibrary这个库来操作数据库,我们可以按照官网中的说明来安装Da ...
- RobotFramework自动化测试框架-使用Python编写自定义的RobotFramework Lib
使用Python构建Lib工程 可以用来开发Python Lib的IDE工具有很多,常见的有Pycharm,Eclipse with PyDev插件等,而且在RobotFramework官网中也已经提 ...
- RobotFramework自动化测试框架-MongoDBLibrary库的使用
笔者接着 RobotFramework自动化测试框架-DatabaseLibrary库的使用(对数据库的操作) 继续分享robotframework 对数据库中的MongoDB的详细操作. Mongo ...
- RobotFramework自动化测试框架-Selenium Web自动化(三)关于在RobotFramework中如何使用Selenium很全的总结(下)
本文紧接着RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)继续分享RobotFramewor ...
- RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser
Selenium出来已经有很多年了,从最初的Selenium1到后来的Selenium2,也变得越来越成熟,而且也已经被很多公司广泛使用.Selenium发展的过程中,分了很多模块,这里我们主要介绍W ...
- robotframework自动化测试框架搭建及问题汇总
1.安装python RF框架是基于python 的,所以一定要有python环境,python与rf存在兼容性问题,我安装的是python3.7.5,robotframework3.1.2. 选择添 ...
随机推荐
- lodar
一个文件使用另一个文件的东西的时候需要使用到 export{开放} --watch 自动检测 可以加载打包的后边 module.exports = { entry:{ //入口文件 home:&quo ...
- 将MySQL服务绑定到固定的IP地址上
近期将在线服务迁移到了阿里云. 阿里云提供了云盾,安全上确实比其他的云服务有了很大的提高,遗憾的是,没有防火墙,还是需要自己设置.阿里云的虚拟机跑在XEN上,直接使用YUM安装iptables ...
- AppFuse 3的乱码问题
书接上回:AppFuse 3常见问题与解决方法,一个新问题:乱码! 在3.0.0版本号下,运行mvn appfuse:full-source命令后使用mvn jetty:run启动工程,页面上就出现了 ...
- HBase在滴滴出行的应用场景和最佳实践
摘要: 主要介绍了HBase和Phoenix在滴滴内部的一些典型案例.文章已在CSDN极客头条和<程序员>杂志发表,应朋友邀请,分享到云栖社区,希望给大家带来启发和帮助. 背景 对接业务类 ...
- Provided Maven Coordinates must be in the form 'groupId:artifactId:version'.
[hadoop@hadoop1 bin]$ ./spark-shell --packages org.mongodb.spark:mongo-spark-connector_2.10-2.2.1 Ex ...
- C++,Base64编解码字符串或文件
参考链接:在C语言中使用libb64进行Base64编解码 GitHub地址:https://github.com/BuYishi/cpp_base64_demo base64_demo.cpp #i ...
- unzip解压指定我文件夹
解压try.zip中指定的文件夹 unzip try.zip "try/*" shell中异常处理 { # your 'try' block executeCommandWhich ...
- 数据结构之 图论---图的深度遍历( 输出dfs的先后遍历序列 )
图的深度遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 请定一个无向图,顶点编号从0到n-1,用深度优先搜索(DFS),遍历并输出.遍历时,先遍历节点编 ...
- UVA11613 Acme Corporation —— 最小费用流(流量不固定的最小费用流)
题目链接:https://vjudge.net/problem/UVA-11613 题意: 商品X在第i个月内:生产一件需要花费mi元,最多可生产ni件,销售一件(在这个月内销售,而不管它是在那个月生 ...
- 启动vmware中的虚拟机的时候,提示Failed to lock the file
http://www.vixual.net/blog/archives/842 VMware Server 當掉後重新啟動 Guest OS 時,出現 cannot open the disk '*. ...