• 何为变量文件?

变量文件中包含了测试数据中的变量。虽然变量可以通过变量表格中创建, 或者通过命令行设置, 不过这些方法有所局限, 而变量文件可以动态地创建任意类型的变量。

变量文件一般由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 —— 变量文件的更多相关文章

  1. Robot Framework变量的使用技巧

    1.变量的使用 变量可以在命令行中设置,个别变量设置使用--variable (-v)选项,变量文件的选择使用--variablefile (-V)选项.通过命令行设置的变量是全局变量,对其所有执行的 ...

  2. robot framework下载文件操作

    不同的浏览器点击[下载]按钮之后,需要点击保存,还是确定,或者直接默认直接下载都是不一样的 1.chrome:点击[下载]之后,会自动执行下载操作,直到下载结束 A)点击下载,等待下载结束(sleep ...

  3. robot framework学习笔记之二———变量

    Robot Framework的变量分为标量, 列表和字典, 分别使用语法格式 ${SCALAR}, @{LIST} 和 &{DICT} 来定义. 此外, 环境变量可以直接使用语法 %{ENV ...

  4. Robot Framework(六)变量

    变量 2.5.1简介 变量是Robot Framework的一个不可或缺的特性,它们可以在测试数据的大多数地方使用.最常见的是,它们用于测试用例表和关键字表中关键字的参数,但所有设置都允许在其值中使用 ...

  5. Robot Framework测试框架学习笔记

    一.Robot Framework框架简介         Robot Framework是一种基于Python的可扩展关键字驱动自动化测试框架,通常用于端到端的可接收测试和可接收测试驱动的开发.可以 ...

  6. robot framework测试数据语法

    Robot Framework通过文件的扩展名来选择使用何种解析器. 扩展名不分大小写. 可以识别的扩展名包括: HTML: .html, .htm 和 .xhtml TSV: .tsv 纯文本: . ...

  7. Robot Framework操作

    Robot Framework 介绍 RobotFramework是一款基于python的开源自动化测试框架,遵守Apache License 2.0协议,在此协议下所有人都可以免费开发和使用.因为R ...

  8. Robot Framework(二)测试数据语法

    2.1.1文件和目录 测试数据的层次结构安排如下: 测试数据在测试数据文件中创建. 测试数据文件会自动创建一个包含该文件中的测试数据的测试套件. 包含测试数据文件的目录构成了更高级别的测试套件.这样的 ...

  9. Robot Framework(八) 资源和变量文件

    2.7资源和变量文件 测试用例文件和测试套件初始化文件中的用户关键字和变量只能在创建它们的文件中使用,但资源文件提供了共享它们的机制.由于资源文件结构非常接近测试用例文件,因此很容易创建它们. 变量文 ...

随机推荐

  1. NOIP 2016 游记

  2. C#集合类型大盘点(转载)

    原文地址:http://www.cnblogs.com/jesse2013/p/CollectionsInCSharp.html#b02

  3. 《Just for Fun》---读后感

    <Just for Fun>本书是Linux之父林纳斯自传,书名的意思是:只是为了好玩.主要是讲了林纳斯的人生经历,以及Linux的诞生过程.Linux从一个终端仿真器到一个世界瞩目的操作 ...

  4. 2018.10.15 NOIP训练 百事世界杯之旅(期望dp)

    传送门 期望题. 其实跟dpdpdp关系并不大. 考虑f[i]f[i]f[i]表示已经凑出了iii个需要的次数. 显然有:f[i]=ni∗f[i]+nn−i∗f[i+1]+1f[i]=\frac {n ...

  5. ThinkPHP5 union分页

    直接贴代码,记录一下,备用 $a = Db::name(表名)->field(字段)->where(条件)->buildSql(); $b = Db::name(表名)->fi ...

  6. 带你快速进入.net core的世界(转)

    出处:http://www.cnblogs.com/zhaopei/p/netcore.html 阅读目录 vmware虚拟机安装 CentOS7.3安装 Windows的客户端软件 .NET Cor ...

  7. UVaLive 2531 The K-League (网络流)

    题意:有 n 个队伍进行比赛,每个队伍比赛数目是一样的,每场恰好一个胜一个负,给定每个队伍当前胜的场数败的数目,以及两个队伍剩下的比赛场数,问你冠军队伍可能是哪些队. 析:对每个队伍 i 进行判断是不 ...

  8. HDU 1050 Moving Tables (贪心)

    题意:在一个走廊两边都有对称分布的连续房间,现在有n张桌子需要从a移动到b房间.每次移动需要10分钟, 但是如果两次移动中需要经过相同的走廊位置,则不能同时进行,需要分开移动.最后求最少需要多长时间移 ...

  9. tred_extract_EDED_new

    # -*- coding:utf-8 -*- import re ''' 适应新版本 ''' year='17a'#用户自定义 ss='./data/'#根目录 filename = ss+'EDED ...

  10. spring @Transactional 声明式事务

    项目地址:git@github.com:witaste/transaction-annotation.git 情景一: A external method calls a method of the ...