• 何为变量文件?

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

变量文件一般由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. 《JavaScript高级程序设计》笔记

    1. 当在函数内部定义了其他函数时,就创建了闭包.闭包有权访问包含函数内部的所有变量. 2. 闭包可以分隔变量空间,不会占用全局空间而造成相互间的干拢.使用闭包可以在JavaScript中模仿块级作用 ...

  2. 557. Reverse Words in a String III

    static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...

  3. 2018.09.27 codeforces618F. Double Knapsack(抽屉原理+构造)

    传送门 思维题. 考虑维护两个数列的前缀和a1,a2,a3,...,ana_1,a_2,a_3,...,a_na1​,a2​,a3​,...,an​和b1,b2,b3,...,bnb_1,b_2,b_ ...

  4. 2018.07.01洛谷P2617 Dynamic Rankings(带修主席树)

    P2617 Dynamic Rankings 题目描述 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i ...

  5. 2018.09.15 poj1041John's trip(欧拉路输出方案)

    传送门 一个欧拉路输出方案的板子题. 竟然难在读入233. 代码: #include<iostream> #include<cstdio> #include<cstrin ...

  6. bootstrap-treeview的 简单使用

    理论:http://blog.csdn.net/babyxue/article/details/73835444 插依赖Bootstrap 和jQuery <link href="~/ ...

  7. UVa 12118 nspector's Dilemma (构造+DFS+欧拉回路)

    题意:给定n个点,e条边和每条边的长度t,每两个点之间都有路相连,让你求一条最短的路经过这e条边. 析:刚开始想到要判连通,然后把相应的几块加起来,但是,第二个样例就不过,后来一想,那么有欧拉回路的还 ...

  8. web.xml 404 500 配置

    web.xml <error-page> <error-code>404</error-code> <location>/error404.html&l ...

  9. 自定义方法实现strcpy,strlen, strcat, strcmp函数,了解及实现原理

    位置计算字符串长度 //strlen()函数,当遇到'\0'时,计算结束,'\0'不计入长度之内 //字符串的拷贝        //strcpy(字符串1,字符串2);        //把字符串2 ...

  10. c++内存管理方式

    概述 本章总结一些关于个人对内存管理的理解,主要包括如下内容: 内存管理原则 优秀的接口 智能指针的作用在哪里? 内存管理原则 学c++的同学都知道这个内存管理原则,就是“谁创建,谁释放”或者说“谁申 ...