robotframework笔记15
资源和变量文件
用户关键字和变量 测试用例文件 和 测试套件 初始化文件只能用于文件在哪里 了,但 资源文件 提供一种机制来分享它们。 自 资源文件结构非常接近测试用例文件,它是 容易创建它们。
变量的文件 提供一个强大的机制来创建和分享 变量。 例如,他们允许字符串和之外的值 启用动态创建变量。 他们的灵活性来自 他们创建使用Python代码,这也使得 他们更复杂得多表变量 。
资源文件
考虑到资源文件使用
资源文件导入使用 资源 设置在 设置表。 资源文件的路径在细胞中 设置后的名字。
如果路径中给出了一个绝对的格式,它是直接使用。 在其他 情况下,首先搜索相对资源文件的目录 导入文件的位置。 如果文件没有找到, 然后从Python的目录搜索 模块搜索路径 。 路径可以包含变量,并推荐使用他们的路径 系统(例如, $ {资源} / login_resources.html 或 $ { RESOURCE_PATH } )。 另外,斜杠( /
)的路径 将自动改为反斜杠( \ 在Windows上)。
*** Settings ***
Resource myresources.html
Resource ../data/resources.html
Resource ${RESOURCES}/common.tsv
用户关键字和变量定义在一个资源文件 可用的文件,资源文件 使用。 同样也在所有的关键字和变量可用 库、资源文件和变量文件导入的说 资源文件。
资源文件结构
资源文件的高级结构是一样的 当然,否则测试用例文件,但是他们不能包含测试 例表。 此外,在资源文件可以设置表 只包含进口设置( 图书馆 , 资源 , 变量 ), 文档 。 变量表和 使用关键字表完全相同的方法在测试用例文件。
如果一些资源文件用户具有相同名称的关键字,他们 必须使用的吗 关键字名称前缀与资源 文件名称 没有扩展(例如, myresources.Some 关键字 和 常见的。 一些关键字 )。 此外,如果一些资源 文件包含相同的变量,一个是第一次进口 考虑使用。
记录资源文件
关键字在一个资源文件可以创建 记录 使用 (文档) 设置。 资源文件本身 文档 设置表中同样 测试套件 。
这两个 Libdoc 和 骑 使用这些文件,他们 天生对任何人打开资源文件可用。 的 第一行的文档关键字记录当它运行时, 否则测试期间的资源文件文件将被忽略 执行。
资源文件示例
*** Settings ***
Documentation An example resource file
Library Selenium2Library
Resource ${RESOURCES}/common.robot *** Variables ***
${HOST} localhost:7272
${LOGIN URL} http://${HOST}/
${WELCOME URL} http://${HOST}/welcome.html
${BROWSER} Firefox *** Keywords ***
Open Login Page
[Documentation] Opens browser to login page
Open Browser ${LOGIN URL} ${BROWSER}
Title Should Be Login Page Input Name
[Arguments] ${name}
Input Text username_field ${name} Input Password
[Arguments] ${password}
Input Text password_field ${password}
变量文件
变量文件包含 变量 在测试中,可以使用 数据。 变量也可以使用变量创建表或设置 命令行,但变量文件允许动态地创建它们 和他们的变量可以包含任何对象。
变量文件通常作为Python模块和实现 两种不同的方法来创建变量:
- 创建变量直接
- 变量指定为模块属性。 在简单的情况下, 语法非常简单,不需要真正的编程。 例如,
MY_VAR = '我的价值
创建一个变量$ { MY_VAR }
与指定的文本值。 - 得到特殊函数的变量
- 变量可以有一个特殊的文件
get_variables
(或getVariables
作为一个映射)方法,它返回变量。 这种方法,因为方法可以把参数是非常灵活的。
或者可以实现为变量文件 Python或Java类 该框架将实例化。 在这种情况下,可以创建 变量属性或让他们从一个特殊的方法。
考虑变量文件使用
设置表
所有测试数据文件可以导入变量使用 变量 设置中设置表,以同样的方式 资源文件都是进口的 使用 资源 设置。 同样的资源文件,导入的路径 变量文件被认为是相对于的目录 导入文件,如果没有找到,它是搜索的 目录 模块搜索路径 。 也可以包含路径变量, 和斜杠转换为Windows上的反斜杠。 如果一个 参数文件需要 参数 后,它们是细胞中指定的路径和也 可以包含变量。
*** Settings ***
Variables myvariables.py
Variables ../data/variables.py
Variables ${RESOURCES}/common.py
Variables taking_arguments.py arg1 ${ARG2}
所有变量从一个变量文件中可用的测试数据文件 进口。 如果几个变量文件进口和他们 包含一个变量具有相同名称的,最早的进口文件 考虑使用。 此外,表和变量中创建变量 从命令行设置覆盖从变量文件变量。
命令行
考虑变量文件使用的另一种方法是使用命令行选项 ——variablefile 。 变量引用文件使用的路径, 和可能的路径参数加入一个冒号( :
):
--variablefile myvariables.py
--variablefile path/variables.py
--variablefile /absolute/path/common.py
--variablefile taking_arguments.py:arg1:arg2
从机器人框架2.8.2,变量的文件中使用 命令行也的搜索 模块搜索路径 同样作为 变量设置表中导入的文件。
如果一个变量文件作为一个绝对Windows路径,冒号后 驱动器并不认为是一个分隔符:
--variablefile C:\path\variables.py
从机器人框架2.8.7,也可以使用分号 ( ;
)作为参数分隔符。 这是非常有用的,如果变量文件参数 包含冒号,但是需要周围的整个价值 引用在类unix操作系统:
--variablefile "myvariables.py;argument:with:colons"
--variablefile C:\path\variables.py;D:\data.xls
变量在这些变量在所有测试数据文件是全局可用 文件,同样是 单独的变量 设置的 ——变量 选择。 如果两个 ——variablefile 和 ——变量 选择和使用有变量相同 的名字,那些单独设置 ——变量 选择优先考虑。
创建变量直接
基本语法
当变量文件被使用时,他们作为Python导入 模块和全球所有属性不从一开始 下划线( _
)被认为是变量。 因为变量 名称不区分大小写,大写字母的名称 可能的,但一般来说,大写字母是全球的建议 变量和属性。
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}
在上面的示例中,变量 变量$ { }
, 另一个变量$ { }
, 创建。 前两个变量是字符串,第三个是 一个整数,然后有两个列表,最后的值是一个字典。 所有这些变量可以用作 标量变量 、列表和 字典也 变量列表 就像 @ {字符串}
(在字典的情况下 该变量只包含键),字典也 字典变量 就像 & {映射}
。
要创建一个变量或一个字典列表变量更加明确, 是可能的前缀的变量名 LIST__
或 DICT__
, 分别为:
from collections import OrderedDict LIST__ANIMALS = ["cat", "dog"]
DICT__FINNISH = OrderedDict([("cat", "kissa"), ("dog", "koira")])
这些前缀不会最终变量名称的一部分,但他们的事业 机器人框架来验证实际上是类似或价值 类字典。 字典存储的实际价值也转过身 当使用到一个特殊的字典 创建字典 变量 在变量表。 这些字典的值是可访问的 等属性 $ { FINNISH.cat }
。 这些字典也下令,但是 保留源订单还需要原来的字典 命令。
变量在两个上面的例子也可以创建使用 变量下表。
*** Variables ***
${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}
@{ANIMALS} cat dog
&{FINNISH} cat=kissa dog=koira
请注意
变量不替换字符串从变量文件。 例如, VAR = " $ {例子}”
将创建 变量 $ { VAR }
文字字符串值 一个$ {例子}
无论将变量 $ { }例子
存在与否。
使用对象作为值
变量变量并不仅限于只有字符串或文件 其他基本类型变量等值表。 相反,他们 变量可以包含任何对象。 在下面的示例中,变量 $ {映射}
包含一个Java散列表(这两个值 在Jython例子只能当运行测试)。
from java.util import Hashtable MAPPING = Hashtable()
MAPPING.put("one", 1)
MAPPING.put("two", 2)
第二个例子创建 $ {映射}
作为一个Python字典 还有两个变量从一个自定义创建对象中实现 相同的文件。
MAPPING = {'one': 1, 'two': 2} class MyObject:
def __init__(self, name):
self.name = name OBJ1 = MyObject('John')
OBJ2 = MyObject('Jane')
创建变量动态
因为变量文件创建使用一个真正的编程语言, 他们可以动态设置变量的逻辑。
import os
import random
import time USER = os.getlogin() # current login name
RANDOM_INT = random.randint(0, 10) # random integer in range [0,10]
CURRENT_TIME = time.asctime() # timestamp like 'Thu Apr 6 12:45:21 2006'
if time.localtime()[3] > 12:
AFTERNOON = True
else:
AFTERNOON = False
上面的例子使用标准Python库设置不同 变量,但是您可以使用您自己的代码构建的价值。 的 下面的例子说明了这个概念,但同样的,你的代码 从数据库中读取数据,从一个外部文件甚至问它 用户。
import math def get_area(diameter):
radius = diameter / 2
area = math.pi * radius * radius
return area AREA1 = get_area(1)
AREA2 = get_area(2)
选择变量包括
当机器人框架流程变量文件,所有的属性 不从下划线预计将开始 变量。 这意味着即使函数或类中创建的 变量文件或从其他地方进口的是变量。 为 最后一个例子将包含的变量 $ {数学}
和 $ { get_area }
除了 $ { AREA1 }
和 $ { AREA2 }
。
通常不会引起额外的变量问题,但他们 可以覆盖其他变量,导致难以调试的 错误。 一种可能忽略其他属性是前缀 下划线:
import math as _math def _get_area(diameter):
radius = diameter / 2.0
area = _math.pi * radius * radius
return area AREA1 = _get_area(1)
AREA2 = _get_area(2)
如果有大量的其他属性,而不是加前缀 ,通常是更容易使用一个特殊的属性 __all__
并赋予它处理属性名称的列表 作为变量。
import math __all__ = ['AREA1', 'AREA2'] def get_area(diameter):
radius = diameter / 2.0
area = math.pi * radius * radius
return area AREA1 = get_area(1)
AREA2 = get_area(2)
请注意
的 __all__
属性也和最初,使用 通过Python决定哪些属性导入 当使用语法 从modulename进口*
。
得到特殊函数的变量
另一种方法获得变量是有一个特别的 get_variables
函数(也camelCase语法 getVariables
是可能的)在一个变量文件。 如果这样的一个函数 存在,机器人框架调用它,愿接收变量 Python字典或Java 地图
变量名称作为键 和变量值的值。 创建变量可以作为标量、 列表和字典时一模一样 创建变量直接 , 它可以使用 LIST__
和 DICT__
前缀来创建 列表和字典更明确的变量。 下面的例子是功能 相同的第一个 创建变量直接 的例子。
def get_variables():
variables = {"VARIABLE ": "An example string",
"ANOTHER VARIABLE": "This is pretty easy!",
"INTEGER": 42,
"STRINGS": ["one", "two", "kolme", "four"],
"NUMBERS": [1, 42, 3.14],
"MAPPING": {"one": 1, "two": 2, "three": 3}}
return variables
get_variables
也可以争论,有助于改变吗 哪些变量实际上是创建。 参数设置功能 作为一个Python函数任何其他参数。 当 把变量文件 投入使用 测试数据,参数中指定的路径后细胞 变量文件,在命令行中他们是分开的 路径与冒号或分号。
下面的虚拟的例子显示了如何使用变量参数文件。 在一个 更现实的例子,论证可以通往外部文本文件 或数据库读取变量。
variables1 = {'scalar': 'Scalar variable',
'LIST__list': ['List','variable']}
variables2 = {'scalar' : 'Some other value',
'LIST__list': ['Some','other','value'],
'extra': 'variables1 does not have this at all'} def get_variables(arg):
if arg == 'one':
return variables1
else:
return variables2
实现变量文件作为Python或Java类
从机器人Framework 2.7开始,可以实现变量文件 Python和Java类。
实现
因为变量文件总是进口使用文件系统路径创造 这些类有一些限制:
- Python类必须有名称相同的模块。
- 必须住在默认包的Java类。
- Java类路径必须结束 . java 或 . class 。 类文件必须在这两种情况下存在。
不管实现语言,框架将创建一个实例 类的不使用参数和变量将得到的实例。 同样与模块,直接变量可以定义为属性 在实例或从特殊了 get_variables
(或 getVariables
)方法。
当变量直接定义一个实例,包含所有属性 可调用的值将被忽略,以避免创建变量从可能的方法 实例。 如果你会需要可调用的变量,你所需要的 使用其他方法来创建变量文件。
例子
第一个例子使用Python和Java创建变量的属性。 他们两人创建变量 变量$ { }
和 @ {列表}
从类 属性和 另一个变量$ { }
从一个实例属性。
class StaticPythonExample(object):
variable = 'value'
LIST__list = [1, 2, 3]
_not_variable = 'starts with an underscore' def __init__(self):
self.another_variable = 'another value'
public class StaticJavaExample {
public static String variable = "value";
public static String[] LIST__list = {1, 2, 3};
private String notVariable = "is private";
public String anotherVariable; public StaticJavaExample() {
anotherVariable = "another value";
}
}
第二个例子使用动态方法获取变量。 这两个 他们只创建一个变量 动态变量$ { }
。
class DynamicPythonExample(object): def get_variables(self, *args):
return {'dynamic variable': ' '.join(args)}
import java.util.Map;
import java.util.HashMap; public class DynamicJavaExample { public Map<String, String> getVariables(String arg1, String arg2) {
HashMap<String, String> variables = new HashMap<String, String>();
variables.put("dynamic variable", arg1 + " " + arg2);
return variables;
}
}
变量文件作为YAML
变量也可以实现为文件 YAML 文件。 YAML是一种数据序列化的语言与一个简单的和人性化的语法。 下面的示例演示了一个简单的YAML文件:
string: Hello, world!
integer: 42
list:
- one
- two
dict:
one: yksi
two: kaksi
with spaces: kolme
请注意
需要使用YAML文件与机器人框架 PyYAML 模块安装。 如果你有 pip安装,可以安装它只需运行 pip安装pyyaml
。
YAML支持新的机器人框架2.9。 从 2.9.2版本, 独立的JAR分布 有 PyYAML包括默认情况下。
可以使用YAML变量文件完全一样正常变量文件 从命令行中使用 ——variablefile 的选项,设置 表的使用 变量 设置,并动态地使用 导入变量 关键字。 要记住的唯一路径 YAML文件必须结束 .yaml 扩展。
如果上面的YAML文件导入,它将创建完全相同的 变量如表:以下变量
*** Variables ***
${STRING} Hello, world!
${INTEGER} ${42}
@{LIST} one two
&{DICT} one=yksi two=kaksi
YAML文件用作变量文件必须在顶级映射。 上面的例子表明,键和值的映射 分别的变量名和值。 变量的值可以是任何数据 YAML的语法支持的类型。 如果名称或值包含非ascii 字符,YAML文件变量必须是utf - 8编码。
映射用作值自动转换成特殊的字典 当使用 创建字典变量 在变量表。 最重要的是,这些字典都可以访问的属性值 就像 $ { DICT.one }
,假设他们的名字是有效的Python的属性名称。 如果名称包含空格或否则不是一个有效的属性名称,它是 总是可以访问字典值使用语法 & { DICT }(空间)
语法。 创建字典也下令,但是 不幸的是在YAML文件的原始顺序不保存。
robotframework笔记15的更多相关文章
- Ext.Net学习笔记15:Ext.Net GridPanel 汇总(Summary)用法
Ext.Net学习笔记15:Ext.Net GridPanel 汇总(Summary)用法 Summary的用法和Group一样简单,分为两步: 启用Summary功能 在Feature标签内,添加如 ...
- 斯坦福ML公开课笔记15—隐含语义索引、神秘值分解、独立成分分析
斯坦福ML公开课笔记15 我们在上一篇笔记中讲到了PCA(主成分分析). PCA是一种直接的降维方法.通过求解特征值与特征向量,并选取特征值较大的一些特征向量来达到降维的效果. 本文继续PCA的话题, ...
- [Aaronyang] 写给自己的WPF4.5 笔记15[AyArc诞生-WPF版本绚丽的环状图,Ay制作,AyWindow强势预览]
原文:[Aaronyang] 写给自己的WPF4.5 笔记15[AyArc诞生-WPF版本绚丽的环状图,Ay制作,AyWindow强势预览] 我的文章一定要做到对读者负责,否则就是失败的文章 -- ...
- SQL反模式学习笔记15 分组
目标:查询得到每组的max(或者min等其他聚合函数)值,并且得到这个行的其他字段 反模式:引用非分组列 单值规则:跟在Select之后的选择列表中的每一列,对于每个分组来说都必须返回且仅返回一直值. ...
- JAVA自学笔记15
JAVA自学笔记15 @例题1:共有5个学生,请把五个学生的信息存储到数组中,并遍历数组,并获取每个学生的信息 Students[] students=new Student[5]; Student ...
- 并发编程学习笔记(15)----Executor框架的使用
Executor执行已提交的 Runnable 任务的对象.此接口提供一种将任务提交与每个任务将如何运行的机制(包括线程使用的细节.调度等)分离开来的方法.通常使用 Executor 而不是显式地创建 ...
- robotframework笔记2
法文件和目录 层次结构安排测试用例构建如下: 在创建测试用例 测试用例文件 . 自动创建一个测试用例文件 测试套件 包含 测试用例文件. 一个目录包含测试用例文件形成一个更高级别的测试 套件. 这样一 ...
- tornado 学习笔记15 _ServerRequestAdapter分析
继承于HTTPMessageDeletegate,是HTTPMessageDeletegate的一种实现,用于处理请求消息. 15.1 构造函数 def __init__(self, ser ...
- Hadoop学习笔记—15.HBase框架学习(基础实践篇)
一.HBase的安装配置 1.1 伪分布模式安装 伪分布模式安装即在一台计算机上部署HBase的各个角色,HMaster.HRegionServer以及ZooKeeper都在一台计算机上来模拟. 首先 ...
随机推荐
- SUSE Linux Enterprise Server 设置防火墙开启ssh远程端口
1.vi /etc/sysconfig/SuSEfirewall2 #编辑防火墙设置 FW_SERVICES_EXT_TCP="22" #开启22端口 rcSuSEfire ...
- Eclipse新建工程编译R cannot be resolved to a variable问题
Eclipse新建工程编译R cannot be resolved to a variable问题 新建工程编译提示R cannot be resolved to a variable 图1 然后打开 ...
- BZOJ 3672 [Noi2014]购票 (熟练剖分+凸壳维护)
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3672 题意:给出一棵有根树(1为根),边有长度.每个点u有三个属性(len[u], ...
- BZOJ 3171 循环格(费用流)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3171 题意: 思路:若能构成循环,则每个格子的入度出度 均为1.因此将每个点拆成两个点x ...
- sql server 查询分析器消息栏里去掉“(5 行受影响)”
sql server 查询分析器消息栏里去掉"(5 行受影响)" 在你代码的开始部分加上这个命令: set nocount on 记住在代码结尾的地方再加上: set ...
- ICP(迭代最近点)算法
图像配准是图像处理研究领域中的一个典型问题和技术难点,其目的在于比较或融合针对同一对象在不同条件下获取的图像,例如图像会来自不同的采集设备,取自不同的时间,不同的拍摄视角等等,有时也需要用到针对不同对 ...
- Create Custom Modal Dialog Windows For User Input In Oracle Forms
An example is given below to how to create a modal dialog window in Oracle Forms for asking user inp ...
- php 引用其他action中的方法
例如要调用IndexAction里的isonline(); 可用下列代码 import('@.Action.IndexAction'); $Index=new IndexAction(); $Inde ...
- 机器学习十大算法之KNN(K最近邻,k-NearestNeighbor)算法
机器学习十大算法之KNN算法 前段时间一直在搞tkinter,机器学习荒废了一阵子.如今想重新写一个,发现遇到不少问题,不过最终还是解决了.希望与大家共同进步. 闲话少说,进入正题. KNN算法也称最 ...
- 高处胜寒 php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
<?php /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一 ...