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资源和变量文件 测试用例文件和测试套件初始化文件中的用户关键字和变量只能在创建它们的文件中使用,但资源文件提供了共享它们的机制.由于资源文件结构非常接近测试用例文件,因此很容易创建它们. 变量文 ...
随机推荐
- sdk接入
文档 http://blog.csdn.net/chenjie19891104/article/details/42217281 视频: https://chuanke.baidu.com/v2869 ...
- select查询
4.2 查询功能 SQL的核心是查询.SQL的查询命令也称作SELECT命令,它的基本形式由SELECT-FROM-WHERE查询块组成,多个查询块可以嵌套执行. 以下表为以后的例子中使用表: 档案 ...
- 匹配数字、字母和?%&=-_这几个符号的正则表达式
/^[\w\?%&=\-_]+$/ 说明:(1) \w 代表 0-9a-zA-Z 即数字.字母 (2) \?%&=\-_ 匹配?%&=-_,而正则中?代表0个或1个,因为是特殊 ...
- Java数据结构和算法(一)线性结构
Java数据结构和算法(一)线性结构 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 线性表 是一种逻辑结构,相同数据类型的 ...
- Eclipse使用。
1. 如何把项目部署到jetty根目录. 先部署.然后在jetty安装根目录下找到contexts,在里面找到你项目名.xml文件.打开后,把<Set name="configurat ...
- 【Mac】使用PicGIF制作gif动态图片
动态图片是我们常常需要的,mac系统下制作gif图片,可以使用PicGIF,AppStore中有一个简单版本免费的 环境与工具 1.mac系统 2.PicGIF Lite(可以在AppStore下载) ...
- KbmMW 4.50.00 测试版发布
We are happy to announce the release of kbmMW v. 4.50.00 Beta Professional and Enterprise Edition wi ...
- 2018.08.17 洛谷P3110 [USACO14DEC]驮运(最短路)
传送门 一道sb最短路,从两个起点和终点跑一边最短路之后直接枚举两人的汇合点求最小值就行了. 代码: #include<bits/stdc++.h> #define N 40005 #de ...
- 47 On Interpersonal Relationship 关于人际关系
47 On Interpersonal Relationship 关于人际关系 ①Since we are social beings, the quality of our lives depend ...
- python类的继承-1
#!/usr/bin/python3 #类定义 class people: #定义基本属性 name = '' age = 0 #定义私有属性,私有属性在类外部无法直接进行访问 __weight = ...