robot framework —— 变量文件
何为变量文件?
变量文件中包含了测试数据中的变量。虽然变量可以通过变量表格中创建, 或者通过命令行设置, 不过这些方法有所局限, 而变量文件可以动态地创建任意类型的变量。
变量文件一般由Python模块实现, 有两种不同的方法来创建变量:
1、方法一:直接创建变量
变量就是模块的属性。最简单的情形下, 这种语法几乎不需要真正的编程。 例如, MY_VAR = 'my value' 就创建了变量 ${MY_VAR}, 后面是变量的值。
当使用变量文件时, 它们像Python的模块一样被导入, 其中的非下划线(_)开头的全局属性均被视作变量。
变量的名字是不区分大小写的, 通常推荐大写字母用作全局变量和属性。
1.1 示例1:
导入变量文件 myvar1.py
MY_VAR = 'my value'
my_name='test'
VARIABLE = "An example string"
ANOTHER_VARIABLE = "This is pretty easy!"
INTEGER = 42
STRINGS = ["one", "two", "kolme", "four"]
NUMBERS = [1, INTEGER, 3.14]
MAPPING = {"one": 1, "two": 2, "three": 3}
rf用例 test2:

执行结果:pass

2.2 示例2,使用下面的方式在变量表中创建 :

2.3 示例3,动态创建变量:
因为变量文件就是真正的编程语言, 其中几乎可以包含任意的代码逻辑来设置变量

2.4 示例4,与示例3类似,真实的代码中的数据可以是来自数据库, 或者外部文件, 甚至是要求用户输入。

rf用例:

执行结果pass: 
选择性的包含变量
当 Robot Framework 处理变量文件时, 这些文件(模块)中所有的属性只要不是以下划线开头, 都会被视作变量, 这其中甚至包括函数或类, 不管是在文件中创建的还是从其它模块导入的。例如, 上面最后一个例子中除了 ${AREA1} 和 ${AREA2} 这两个我们预期的变量外, 最终还包含了 ${math} 和 ${get_area} 这两个变量。
虽然通常情况下这些额外的变量不会造成什么问题, 但是它们有可能会无意覆盖其它的变量名, 由此引发的错误将难以定位。推荐的做法是使用特殊属性 __all__, 将要作为变量暴露的属性名放在列表中赋值给它。

rf用例:

执行结果fail:

2、方法二:通过特殊函数获取变量
变量文件中可以包含一个特殊的函数 get_variables (或者 getVariables), 该函数将变量按字典的形式返回。该函数还可以接受参数, 所以这种方法非常灵活。
如果这个函数存在, Robot Framework将调用该函数, 并且预期返回的结果是Python的字典类型或者Java中的 Map 类型, 其中变量的名称是键, 而值就是变量的值。
2.1 示例1:

rf用例:

执行方法一:


执行方法二:

执行方法三:

2.2 示例2:演示变量文件如何使用参数
在更真实的场景中, 这些参数可能是一个用来读取参数的外部文件的路径, 或者是数据库的地址。:
get_variables 可以接受参数, 这样可以很方便的改变实际要创建什么样的变量。参数的数量和类型和普通的Python函数并无二致。当在测试数据中使用变量文件时, 调用参数跟在变量文件后面的表格里, 而在命令行中则通过冒号或分号和文件路径分开。

示例:见另一篇博文介绍https://www.cnblogs.com/chengchengla1990/p/9890926.html
如何使用变量文件?
1、方法一:所有的测试数据文件都可以在设置表Setting中通过 Variables 来导入变量。
如果 变量文件可以接受参数, 这些参数跟在路径后面的单元格中, 并且这些参数同样可以使用变量。

注:变量文件中定义的所有变量在导入它的测试文件中都是可见的,如果同时导入了多个变量文件并且存在名称冲突, 则最先导入的生效。此外, 通过变量表格和命令行方式设置的变量会覆盖变量文件中的同名变量。
2、方法二:
通过命令行选项 --variablefile 来指定变量文件。选项后面跟着文件的路径, 如果要传递参数的话, 使用冒号 (:) 来分隔:

示例如下:

从Robot Framework 2.8.7版本开始, 还可以使用分号(;)作为参数的分隔符. 这种情况对参数本身也包含冒号时特别有用. 不过需要注意, 在UNIX-like操作系统中, 要使用双引号将整个选项值括起来:

这些变量文件中的变量在所有测试文件中全局可见, 这点和通过选项 --variable 来设置 单个变量 类似.
如果同时使用了 --variablefile 和 --variable 选项, 并且发生变量名冲突, 则使用 --variable 选项设置的变量胜出.
robot framework —— 变量文件的更多相关文章
- Robot Framework变量的使用技巧
1.变量的使用 变量可以在命令行中设置,个别变量设置使用--variable (-v)选项,变量文件的选择使用--variablefile (-V)选项.通过命令行设置的变量是全局变量,对其所有执行的 ...
- robot framework下载文件操作
不同的浏览器点击[下载]按钮之后,需要点击保存,还是确定,或者直接默认直接下载都是不一样的 1.chrome:点击[下载]之后,会自动执行下载操作,直到下载结束 A)点击下载,等待下载结束(sleep ...
- robot framework学习笔记之二———变量
Robot Framework的变量分为标量, 列表和字典, 分别使用语法格式 ${SCALAR}, @{LIST} 和 &{DICT} 来定义. 此外, 环境变量可以直接使用语法 %{ENV ...
- Robot Framework(六)变量
变量 2.5.1简介 变量是Robot Framework的一个不可或缺的特性,它们可以在测试数据的大多数地方使用.最常见的是,它们用于测试用例表和关键字表中关键字的参数,但所有设置都允许在其值中使用 ...
- Robot Framework测试框架学习笔记
一.Robot Framework框架简介 Robot Framework是一种基于Python的可扩展关键字驱动自动化测试框架,通常用于端到端的可接收测试和可接收测试驱动的开发.可以 ...
- robot framework测试数据语法
Robot Framework通过文件的扩展名来选择使用何种解析器. 扩展名不分大小写. 可以识别的扩展名包括: HTML: .html, .htm 和 .xhtml TSV: .tsv 纯文本: . ...
- Robot Framework操作
Robot Framework 介绍 RobotFramework是一款基于python的开源自动化测试框架,遵守Apache License 2.0协议,在此协议下所有人都可以免费开发和使用.因为R ...
- Robot Framework(二)测试数据语法
2.1.1文件和目录 测试数据的层次结构安排如下: 测试数据在测试数据文件中创建. 测试数据文件会自动创建一个包含该文件中的测试数据的测试套件. 包含测试数据文件的目录构成了更高级别的测试套件.这样的 ...
- Robot Framework(八) 资源和变量文件
2.7资源和变量文件 测试用例文件和测试套件初始化文件中的用户关键字和变量只能在创建它们的文件中使用,但资源文件提供了共享它们的机制.由于资源文件结构非常接近测试用例文件,因此很容易创建它们. 变量文 ...
随机推荐
- Mininet
在Coursera SDN开放课程中,编程作业要用Mininet来完成.这里对Mininet做一个简单的介绍. 什么是Mininet Mininet是由一些虚拟的终端节点(end-hosts).交换机 ...
- [Selenium]对弹出的Alert窗口进行操作
Alert alert = driver.switchTo().alert(); alert.accept();
- 重新学习pytorch的库函数等..
http://blog.csdn.net/victoriaw/article/list/10 开始第一篇: http://blog.csdn.net/VictoriaW/article/details ...
- JavaScript 代码小片段
1.获取对象 obj 的所有属性(自有属性和继承属性),保存到数组 lst 中 //获取对象obj的所有属性(自有属性和继承属性),保存到数组lst 中 var lst = []; function ...
- spring-data-jpa+hibernate 各种缓存的配置演示
本文所有测试用代码在https://github.com/wwlleo0730/restjplat 的分支addDB上 目前在使用spring-data-jpa和hibernate4的时候,对于缓存关 ...
- 2018.08.02 洛谷P3355 骑士共存问题(最小割)
传送门 这题让我联想到一道叫做方格取数问题的题,如果想使摆的更多,就要使不能摆的更少,因此根据骑士的限制条件建图,求出至少有多少骑士不能摆,减一减就行了. 代码: #include<bits/s ...
- webuploader 文件上传插件 IE8/9 文件选择不上传
IE8/9下文件上传是采用flash模式,一直发送http://xxx.xxx.xx.xx:8888/crossdomain.xml请求,状态码为404,原因是上传文件的服务器未配置crossdoma ...
- 全面理解iOS开发中的Scroll View[转]
from:http://mobile.51cto.com/hot-430409.htm 可能你很难相信,UIScrollView和一个标准的UIView差异并不大,scroll view确实会多一些方 ...
- tornado+bootstrap急速搭建你自己的网站
bootstrap既然是这么的流行又能省很多的事为什么不用他呢?再加上牛X的produced by FB的tornado简直如虎添翼了! 1. 安装配置 安装所需要的库等内容.这里没什么需要多讲的.t ...
- Java中的I/O 线程 网络
Java学习总结--I/O,线程,网络题目整理 I/O 1.有什么理由必须要用字符流? 答:处理字符数据的语法更方便.自动化字符编码 2.插入哪些代码可以让下面的代码正确编译? Console con ...