Robot Framework变量的使用技巧
1、变量的使用
变量可以在命令行中设置,个别变量设置使用--variable (-v)选项,变量文件的选择使用--variablefile (-V)选项。
通过命令行设置的变量是全局变量,对其所有执行的用例都有效。它们将覆盖变量表格中的同名变量或是
通过变量文件引入到测试数据中的同名变量。
设置单个变量的语法是--variable name:value, “name”是不使用${}的变量名称, “value”则是其赋予的值。
可以多次使用该选项设置多个变量。仅有标量变量可以使用该语法且只能赋值字符串。许多特殊字符在命
令行中很难表示,但可以使用转义字符转义它们,使用—escape 选项。
--variable EXAMPLE:value
--variable HOST:localhost:7272 --variable USER:robot
--variable ESCAPED:Qquotes_and_spacesQ --escape quot:Q --escape space:_
在命令行中使用变量文件的基本语法是--variablefile path/to/variables.py
使用 Set Test Variable 创建的变量,可以在该测试用例范围内的任何位置有效。例如,你在一个用户关键字
中创建了变量,它将在测试用例级别有效及当前测试中的所有其他用户自定义关键字中有效。其他测试用
例将看不到该变量。
使用 Set Suite Variable 创建的变量,可以在当前测试集范围内的任何位置有效。使用该关键字创建变量同使
用测试数据文件的设置表格设置变量和引入变量文件相同。其他的关键字,包括可能的子测试集,都将不
能看到该关键字创建的变量。
使用 Set Global Variable keyword 创建的变量, 在所有测试用例和测试集中有效。 通过该关键字创建的变量同
使用命令行选项-variable 或—variablefile 创建的变量相同。因为该关键字可以在任何地方改变变量值,所有
需要小心使用
有效的操作系统内建变量
Variable Explanation
${CURDIR} 提供当前测试文件存放的绝对路径。该变量是大小写敏感的。
${TEMPDIR} 获取操作系统临时文件夹的绝对路径。 在UNIX系统是在/tmp, 在windows系统是在c:\Documents and
Settings\<user>\Local Settings\Temp.
${EXECDIR} 获取测试执行开始目录的绝对路径。该变量是在 Robot Framework2.1 新加的。
空格和空变量
可以使用${SPACE}和${EMPTY}创建空格和空变量。这些变量非常有用,否则需要使用反斜杠用于转义空格或
空单元格。当需要使用多个空格时,可以使用该语法${SPACE*5}。如下面的例子,should be equal 使用了同
样的参数,但使用该语法比使用反斜杠更简单清晰。
一些自动变量可以在测试用例中使用。这些变量在执行时会有不同的值,并且他们不是在任何时候都是有
效的。
Variable Explanation Available
${TEST NAME} 获取当前测试用例名称 Test case
@{TEST TAGS} 包含当前测试集中的 tag,按字母排序 Test case
${TEST STATUS}
获取当前测试用例的状态,PASS 或 FAIL 中的一种。只能在测试用例
的 Teardown 中使用
Test
teardown
${TEST MESSAGE} 当前测试用例可能的错误信息。只能在测试用例的 Teardown 中使用
Test
teardown
Variable Explanation Available
${PREV TEST NAME} 前一个测试用例的名称,或者为空字符串【当没有任何测试用例执行
过】 。可以在任何地方使用
Everywhere
${PREV TEST
STATUS}
前一个测试用例的状态,PASS,FAIL 或者未空字符串, 【当没有任何
用例执行过】 。可以在任何地方使用
Everywhere
${PREV TEST
MESSAGE}
前一个测试用例可能的错误信息。可以在任何地方使用 Everywhere
${SUITE NAME} 当前测试集的全名称。可以在任何地方使用。 Everywhere
${SUITE SOURCE}
测试集文件或目录的绝对路径,Robot Framework2.5 新增变量。可以
在任何地方使用。
Everywhere
${SUITE STATUS} 当前测试集的状态, PASS 或 FAIL。只能在测试集的 teardown 中使用。
Suite
teardown
${SUITE MESSAGE} 测试集的所有消息,包括统计。只能在测试集的 teardown 中使用。
Suite
teardown
${OUTPUT FILE}
当前输出文件的绝对路径。当输出文件被分割会有不同的值。可以在
任何地方使用。
Everywhere
${LOG FILE}
当前日志文件的绝对路径或字符串 None【当没有日志文件时】 。当输
出被分割时,将可能有不同的值。
Everywhere
${REPORT FILE} 当前报告文件的绝对路径或字符串 NONE【当没有报告文件生成时】 。 Everywhere
${SUMMARY FILE} 摘要文件的绝对路径或字符串 NONE【当没有摘要文件时】 。 Everywhere
${DEBUG FILE} 调试文件的绝对路径或字符串 NONE【当没有调试文件时】 。 Everywhere
${OUTPUT DIR} 输出目录的绝对路径 Everywhere
变量文件创建变量时,
创建列表变量,变量
名称必须使用前缀LIST__(注意是两个下划线)。LIST__STRINGS = ["list", "of", "strings"]
2、用例执行部分
指定测试数据执行
RF 的测试用例可以创建在文件或目录中,在运行脚本后接需要执行用例的名文件名或路径名。路径可以是
绝对路径,更普遍的是相对路径。文件或目录构成顶级测试集,该测试集如果没有被--name option 所覆盖,
它将使用文件或目录名作为自己的名字。不同的执行情况将在下面的例子中说明。本章节中只有 pybot 被用
到,但 jybot 脚本的用法类似。
pybot test_cases.html
pybot path/to/my_tests/
pybot c:\robot\tests.txt
我们可以通过用空格分割来一次给出多个文件的路径,来运行多个文件或目录下的文件。RF 可以自动的产
生顶级的测试集, 具体的文件或目录将变成它的子测试集。 产生的测试集的名称将由子测试集的名字和 “&”
组成。例如下面的第一个例子中,顶级的测试集名称为 My Tests & Your Tests。但是,有时自动产生的测试
集的名字将很长很复杂。通常,更好的做法是使用—name option 来覆盖名称,正如第二个例子所示:
pybot my_tests.html your_tests.html
pybot --name Example path/to/tests/pattern_*.html
使用参数
当使用参数时,参数必须位于运行脚本和源数据中间。例如:
pybot -L debug my_tests.txt
jybot --include smoke --variable HOST:10.0.0.42 path/to/tests/
设置参数值
大部分参数需要一个参数值, 位于参数名后面。 长参数和短参数都接受由空格分开的参数值, 例如: “--include
tag”或“-i tag” 。使用长参数时,可以将等号“=”作为分隔符,例如“--include=tag” ,使用短参数时,分
隔符可以省略,例如“-itag” 。
某些参数可以被具体赋值多次。例如, “--variable VAR1:value --variable VAR2:another”设置了两个变量。如
果某个只有一个值的参数被赋值多次,则最后一次生效。
简单正则表达式
很多参数后可接正则表达式的参数值。 “*”和“?”可替代具体的字符, “*”可匹配任何包括空值在内的
字符串, “?” 可以匹配任何单个字符。 例如: “--include prefix-*” 匹配所有以 “prefix-” 开头的 tag, “--include
a???” 匹配所有以“a”开头 4 个字符的 tag。
返回码
运行脚本通过返回码使所有测试用例的状态和系统交互。如果所有的用例执行启动成功而且没有严重的失
败,返回码将是 0,所有可能的返回码都列在下表中。
返回码
用例执行完之后,很容易通过返回码来确定所有用例执行的状态。例如,在 bash shell 中,返回码保存在具
体的变量“ $?”中,在 Windows 系统中,返回码保存在变量% ERRORLEVEL %中。如果您使用外部的工
具来运行用例,请查询相关的文档来了解如何获得返回值。
用例的启动:
在第一个例子中,使用不同的浏览器做相同的 WEB 测试,并合并测试结果。使用 shell 脚本实现该功能就
非常简单,只需要把需要使用到的命令逐行列出来。
#!/bin/bash
pybot --variable BROWSER:Firefox --name Firefox --log none --report none --output out/fx.xml login
pybot --variable BROWSER:IE --name IE --log none --report none --output out/ie.xml login
rebot --name Login --splitoutputs 1 --outputdir out --output login.xml out/fx.xml out/ie.xml
在 Windows 中使用批处理文件来实现上述功能也不是很复杂,有一点很重要,pybot 和 rebot 是由批处理文
件实现的,当运行其他批处理文件时,必须要使用 call。当第一个批处理文件结束时,测试也将结束。
@echo off
call pybot --variable BROWSER:Firefox --name Firefox --log none --report none --output out\fx.xml login
call pybot --variable BROWSER:IE --name IE --log none --report none --output out\ie.xml login
call rebot --name Login --splitoutputs 1 --outputdir out --output login.xml out\fx.xml out\ie.xml
执行测试集和测试用例
测试用例总是在某个测试集中执行。由目录产生的测试集包含由测试用例文件或目录组成的子测试集,由
测试用例文件组成的测试集直接包含测试用例。默认情况下,所有的测试用例都会执行,可以通过参数
“--test” 、 “--suite、 “--include”和“--exclude”来选择用例执行。测试集中如果没有用例,将不会执行。
RF 从顶级的测试集开始执行。如果测试集中包含用例,则顺序执行。如果测试集中再包含测试集,则按照
深度优先的顺序依次执行。当执行单个用例时,关键字按顺序执行。通常用例中的任何一个关键字失败了,
用例将停止执行,但是,我们可以做到让失败后继续执行。接下来的章节中将具体介绍准确的执行顺序和
setups 和 teardowns。
Robot Framework变量的使用技巧的更多相关文章
- robot framework —— 变量文件
何为变量文件? 变量文件中包含了测试数据中的变量.虽然变量可以通过变量表格中创建, 或者通过命令行设置, 不过这些方法有所局限, 而变量文件可以动态地创建任意类型的变量. 变量文件一般由Python模 ...
- robot framework学习笔记之二———变量
Robot Framework的变量分为标量, 列表和字典, 分别使用语法格式 ${SCALAR}, @{LIST} 和 &{DICT} 来定义. 此外, 环境变量可以直接使用语法 %{ENV ...
- Robot Framework(六)变量
变量 2.5.1简介 变量是Robot Framework的一个不可或缺的特性,它们可以在测试数据的大多数地方使用.最常见的是,它们用于测试用例表和关键字表中关键字的参数,但所有设置都允许在其值中使用 ...
- Robot Framework 内置变量
转自:https://blog.csdn.net/qq_26886929/article/details/53907755 Robot Framework 内部提供了一下直接可用的内置变量 1. 操作 ...
- Robot Framework(八) 资源和变量文件
2.7资源和变量文件 测试用例文件和测试套件初始化文件中的用户关键字和变量只能在创建它们的文件中使用,但资源文件提供了共享它们的机制.由于资源文件结构非常接近测试用例文件,因此很容易创建它们. 变量文 ...
- Robot Framework(12)- 详细解读 RF 的变量和常量
如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 常量的栗子 常量 ...
- Robot Framework(9)- 使用变量文件
如果你还想从头学起Robot Framework,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1770899.html 啥是变量文件 变 ...
- 2小时入门Robot Framework
1.介绍 1.1.介绍Robot Robot Framework是一个基于关键字驱动的自动化测试框架.通过该框架,测试人员可使用python封装关键字,并在非代码环境下使用关键字构建可被执行的测试用例 ...
- Robot Framework用法总结
今天总结下Robot Framework最基本的用法,一来呢,希望自己以后看到这篇总结,很快能回忆起如何使用Robot Framework.二来呢,以初学者的姿态总结Robot Framework,希 ...
随机推荐
- ESP8266文档阅读2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf
2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf 1.前言 本⽂文主要介绍基于ESP8266物联⺴⽹网模块的SDK相关使⽤用⽅方法,包括开发⼯工具使⽤用以及SDK软件包架 ...
- Shiro——认证
引入shiro依赖 <!-- shiro --> <dependency> <!-- shiro-core Required in all environments. - ...
- Jmeter接口测试-基于nodejs的to do list项目说明
一.了解测试项目 我们的测试项目叫做smile_task,简称sm_task.这是一个基于nodejs超简单的todo list. 它的主要流程就是:输入标题描述---点击创建一个任务---编辑修改任 ...
- Selenium如何定位动态id/class的元素?
今天再给大家分享一个定位不到元素的原因——动态id. 没有打开新页面.没有alert.没有frame.加了等待时间,但是还是定位不到元素?很有可能是你要定位的元素的属性是动态的,即每次打开页面,这个 ...
- 下载特定区域内街景照片数据 | Download Street View Photos within Selected Region
作者:姜虹,刘子煜,王玥瑶,杨安琪,天靖居士 街景图片可以通过api下载,但需要提供参数,参数中的poiid.panoid.location可以用来确定位置或全景图片的ID以确定对应的街景图片.优先级 ...
- memset函数使用
函数原型 void *memset(void *s,int c,size_t n): 功能 将已开辟内存空间 s 的首 n 个字节的值设为值 c. 头文件 #include<memory.h& ...
- sql 与 oracle 几个简单语法差别
sql 与 oracle 之间的 语法差别. 简单的几个函数转换 sql-> Up_Time=getdate(), isnull(), substring(), charindex(), ...
- Map存储容量及内存占用测试
Integer a = 1; long start = 0; long end = 0; // 先垃圾回收 System.gc(); start = Runtime.getRuntime().free ...
- C#分布式存储演练(提供项目下载)
C#简单的演练了一下分布式的存储,学习fastdns的结构,Client向ProcessCenter请求Storage的服务,然后上传文件. 分布式服务就是多个服务器作为客户端互相[配合],要中心化就 ...
- 分享我的第一个asp.net core开发过程
.net core 这个东西感觉还是很不错的,学习了一下,并且做了一个微服务(IP地址查询服务) http://vju.cc/ip/ipquery 看上他的跨平台功能,所以就研究一下,中间有不少坑,有 ...