机器人框架概述
 
机器人框架是一个通用的开源的自动化测试框架 验收测试和验收测试驱动开发(ATDD)。它具有易于使用的表格的测试数据 语法采用关键字驱动 测试方法。其检测能力可以通过测试库 用Python或java实现的扩展,用户可以使用相同的语法,用于创建测试用例 现有创造新的更高层次的 关键词。
 
机器人框架的操作系统和应用程序的独立。核心 框架实现Python跑也Jython(JVM)和IronPython(.net)。框架周围有由不同的 通用试题库和工具,开发了一个丰富的生态系统作为单独的项目。
 
关于机器人的结构和生态系统的更多信息,参见http://robotframework.org。在那里你可以找到更多的资料, 演示项目清单及其他可用的测试库,工具等。
 
演示中的应用
 
本指南的示例应用程序是一个经典的登录 例子的变化,它是一个命令行的Python写的认证服务器。 应用允许用户做三:
 
一个有效的密码创建一个帐户。
使用有效的用户名和密码。
更改现有帐户的密码。
应用程序本身是login.py SUT /文件和可执行 命令Python的SUT的login.py /。试图使用一个不存在的 用户帐户或同一错误信息密码无效的结果:
 
> python sut/login.py login nobody P4ssw0rd
Access Denied
 
有效的密码登录后,创建一个用户帐户成功:
> python sut/login.py create fred P4ssw0rd
SUCCESS > python sut/login.py login fred P4ssw0rd
Logged In
有两个要求,密码必须是有效的实现:它必须 在7-12个字符,它必须包含上下的情况下 字母和数字,但不能包含特殊字符。试图 创建一个无效的密码用户失败:
> python sut/login.py create fred short
Creating user failed: Password must be 7-12 characters long > python sut/login.py create fred invalid
Creating user failed: Password must be a combination of lowercase and
uppercase letters and numbers
无效凭据结果相同的错误消息 测井与无效凭据更改密码。新密码的有效性验证,如果 无效,错误消息了:
 
> python sut/login.py change-password fred wrong NewP4ss
Changing password failed: Access Denied
> python sut/login.py change-password fred P4ssw0rd short
Changing password failed: Password must be 7-12 characters long > python sut/login.py change-password fred P4ssw0rd NewP4ss
SUCCESS
应用程序使用一个简单的数据库文件来跟踪用户的状态。 文件位于操作系统相关的临时。
 
执行本指南
 
这些指示说明如何运行这个引导自己。如果你不 感兴趣,你也可以查看结果在线
 
装置
 
推荐的方法安装在机器人的框架Python使用PIP。一旦你有这些条件 安装,你可以简单地运行:
 
pip安装robotframework
 
看到机器人安装框架指令在一般的安装选择安装 方法和更多信息。
 
这个演示是用关于标记语言与机器人 框架试验数据的代码块。这种格式需要安装额外的 执行测试Docutils模块
 
安装docutils PIP
注意到机器人框架3是第一个机器人框架支持 Python 3版本。看到上述安装说明信息 Python Python 2 vs 3。
 
执行
 
之后,你还需要演示本身的安装。这是最简单的 下载一定发布或抓住最新的内容提取 包的地方,但也可能是克隆工程库。
 
安装到位后,所有其他的条件,你可以在命令行运行 演示用机器人命令:
 
robot QuickStart.rst
 
如果你使用机器人框架2.9以上,取而代之的是机器人你 需要使用命令PyBot:
 
pybot quickstart.rst
你也可以用不同的命令行选项配置执行:
robot --log custom_log.html --name Custom_Name QuickStart.rst
一个列表中的可用选项运行机器人帮助。
 
查看结果
 
运行演示产生以下三个结果文件。这些文件是 与预执行文件放到网上,但执行演示创建本地 。
 
report.html
高水平的测试报告。
log.html
 
详细的测试执行日志。
output.xml
 
在机器可读的XML格式的结果。
测试用例
 
工作流测试
 
机器人框架的测试用例是使用一个简单的语法创建表格。对于 例子,桌子下面有两试验:
 
用户可以创建一个帐户并登录
用户无法登录和密码错误
*** Test Cases ***
User can create an account and log in
Create Valid User fred P4ssw0rd
Attempt to Login with Credentials fred P4ssw0rd
Status Should Be Logged In User cannot log in with bad password
Create Valid User betty P4ssw0rd
Attempt to Login with Credentials betty wrong
Status Should Be Access Denied
注意,这些测试的念想手动测试用英语写的相当 比喜欢自动化测试用例。机器人框架使用关键字驱动的方法,支持 写作测试,捕捉动作 与自然语言中的期望的本质。
 
测试用例是由关键词及其可能的争论。的 语法要求关键字和参数,以及设置及其 值,相隔至少两个空格或制表符。这是 一般推荐使用四个空格来分隔更加明确, 和在某些情况下调整参数或其他值可以使数据更容易 来。关于语法的更多细节见机器人框架用户 指南。
 
高水平的测试
 
测试用例也可以只使用高级别的关键字,不 位置参数创建。这种方式允许使用完全免费的文本, 适合通信甚至非技术客户或其他项目利益相关者 。这一点尤其重要,当使用 验收测试驱动开发(ATDD)方法或其变体和创造 测试法还要求。
 
机器人框架不写测试用例执行任何特定的风格。 共同的风格鉴于当时的格式的推广行为驱动开发(BDD):
*** Test Cases ***
User can change password
Given a user has a valid account
When she changes her password
Then she can log in with the new password
And she cannot use the old password anymore
鉴于一个用户有一个有效的帐户什么 时候她改变她的密码然后她可以用新密码登录和她不能使用旧密码了
 
数据驱动测试
经常会有多个测试用例很相似但稍有不同的输入或输出数据 。在这些情况下数据驱动测试允许不同的测试数据不重复的工作流。机器人 框架[模板]设置一个测试用例为转向数据驱动的测试 在关键字template是用在测试用例 体定义的数据执行:
 
*** Test Cases ***Invalid password[Template]    Creating user with invalid password should fail
abCD5 ${PWD INVALID LENGTH}
abCD567890123 ${PWD INVALID LENGTH}
123DEFG ${PWD INVALID CONTENT}
abcd56789 ${PWD INVALID CONTENT}
AbCdEfGh ${PWD INVALID CONTENT}
abCD56+ ${PWD INVALID CONTENT}
 
除了使用[模板]与单独的测试设置,它会 可以使用测试模板设置在设置表像设置和拆解在本指南定义。在我们的例子中, 将会创建单独的分别命名为试验 太短太长的密码和其他无效的情况下。这会让那些 测试到一个单独的文件,虽然,因为否则会 通用模板也可应用于该文件中的其他测试。
 
还要注意,在上面的例子中的错误消息指定使用变量。
 
关键词
 
测试用例是从关键词可以来自两个来源。库关键词字来自进口的测试库,和所谓的用户关键词可以使用相同的表格的语法,用于创建测试用例创建 。
 
库关键词
 
所有的最低水平的关键词是在测试库,使用标准的编程语言实现的 定义,通常Python或java。机器人框架 配备一把试题库可分为标准 图书馆,外部库和自定义库。标准库分布的核心框架,包括通用库等操作系统,截图和内置这是因为,特别 关键词可自动。外部的库,如selenium2libraryWeb测试,必须单独安装。如果有 测试库是不够的,很容易创建自定义的测试库。
 
能够使用的试题库提供的关键字,这是必须要考虑的 使用。本指南中的测试需要关键词的标准操作系统库关键词(例如删除文件)和一个定制的loginlibrary(例如尝试登录凭据)。这些都是进口的 库关键词在设置表:
*** Settings ***
Library OperatingSystem
Library lib/LoginLibrary.py
 
用户关键词
 
一个机器人框架最强大的功能是很容易 创造新的更高层次的关键词从其他关键词的能力。语法创建 这些所谓的用户定义的关键词,或用户关键词的简称,是 相似的语法,用于创建测试用例。所有的 上级关键词在以前的测试用例都需要在这 关键词表创建:
*** Keywords ***
Clear login database
Remove file ${DATABASE FILE} Create valid user
[Arguments] ${username} ${password}
Create user ${username} ${password}
Status should be SUCCESS Creating user with invalid password should fail
[Arguments] ${password} ${error}
Create user example ${password}
Status should be Creating user failed: ${error} Login
[Arguments] ${username} ${password}
Attempt to login with credentials ${username} ${password}
Status should be Logged In # Keywords below used by higher level tests. Notice how given/when/then/and
# prefixes can be dropped. And this is a comment. A user has a valid account
Create valid user ${USERNAME} ${PASSWORD} She changes her password
Change password ${USERNAME} ${PASSWORD} ${NEW PASSWORD}
Status should be SUCCESS She can log in with the new password
Login ${USERNAME} ${NEW PASSWORD} She cannot use the old password anymore
Attempt to login with credentials ${USERNAME} ${PASSWORD}
Status should be Access Denied
用户定义的关键词可以包括由其他用户或 库关键词定义的行为。正如你可以看到从这个例子中,用户定义的关键词可以 带参数。他们也可以返回值,甚至包含环。对于 现在,重要的是要了解用户自定义关键词使测试 创造者创造共同的行动序列的可重复使用的步骤。用户定义的 关键词也可以帮助测试者保持尽可能 可读性测试在不同的情况下使用适当的抽象层次。
 
变量
 
定义变量
 
变量是机器人框架中不可或缺的一部分。通常使用的任何数据 测试是随时变化的最好定义为变量。对于 变量定义的语法很简单,在这个变量表见:
*** Variables ***
${USERNAME} janedoe
${PASSWORD} J4n3D0e
${NEW PASSWORD} e0D3n4J
${DATABASE FILE} ${TEMPDIR}${/}robotframework-quickstart-db.txt
${PWD INVALID LENGTH} Password must be 7-12 characters long
${PWD INVALID CONTENT} Password must be a combination of lowercase and uppercase letters and numbers
除了用户定义的变量,有一些内置的变量, 总是可用。这些变量包括$ { TempDir }和$ {/}这 使用上面的例子。
 
使用变量
 
变量可用于测试数据中的大部分地方。他们是最常见的 作为关键词下面的测试用例的争论说明。值从 返回关键词也可以被赋值给变量和以后使用。 例如数据库应包含 用户关键词集 数据库内容{ }元数据库变量并验证的内容 使用内置关键词应包含。库关键词和用户的关键词可以 返回值。

*** Test Cases ***
User status is stored in database
[Tags] variables database
Create Valid User ${USERNAME} ${PASSWORD}
Database Should Contain ${USERNAME} ${PASSWORD} Inactive
Login ${USERNAME} ${PASSWORD}
Database Should Contain ${USERNAME} ${PASSWORD} Active *** Keywords ***
Database Should Contain
[Arguments] ${username} ${password} ${status}
${database} = Get File ${DATABASE FILE}
Should Contain ${database} ${username}\t${password}\t${status}\n

测试套件
 
测试用例的集合被称为机器人框架的测试套件。每一 输入文件包含测试用例的测试套件的形式。什么 时候执行此 指南,你看测试套件快速启动在控制台输出。这个名字是 得到文件名也是可见的报告和日志。
 
它是可能的组织测试用例的测试用例 分层放置文件到目录,这些目录到其他的目录。所有的 这些目录自动创建高水平的测试套件,让他们 名称目录名称。由于测试套件只是文件和目录, 他们平凡的放置在任何版本控制。
 
设置和拆解
 
如果你想要某些关键词是每个测试之前或之后执行, 使用测试设置和测试拆卸在设置表的设置。 同样可以使用套件设置和套件拆卸设置 指定要之前或之后执行关键词整个测试套件。
 
个人测试还可以用有一个自定义安装或拆卸[设置]和[关闭]在测试用例表。这种工作方式相同[模板]使用前数据驱动测试。
 
在本演示中我们要确保数据库之前执行 开始,每个测试也事后清理清理:
*** Settings ***
Suite Setup       Clear Login Database
Test Teardown Clear Login Database
使用标签
机器人框架允许为测试用例设置标签,给他们自由的元数据。 标签可以设置案件在所有测试文件力的标签和 默认标签在下面的表格中设置一样。它也可以定义为一个单一的标签 测试的情况下使用标签设置像早些时候 用户 状态存储在数据库中测试
*** Settings ***
Force Tags        quickstart
Default Tags example smoke
当你看后执行测试报告,您可以看到测试 指定标签与他们也有 统计生成基于标签。标签也可以用于许多其他用途,其中最重要的是 可能选择什么样的测试执行。你可以试试, 例如,如下:
 
robot --include smoke QuickStart.rst
robot --exclude database QuickStart.rst
 
创建测试库
 
机器人框架提供了使用 python或java创建测试库的一个简单的API,和远程库接口允许使用其他 编程语言。机器人框架用户指南包含详细的 描述库的API。
 
作为一个例子,我们可以看一看loginlibrary在这 演示测试库。库关键词位于自由/ loginlibrary.py,和它的源代码 也是复制下面。看代码就可以看到,例如,如何 关键词创建用户映射到实际的实施方法create_user。
 
import os.path
import subprocess
import sys classLoginLibrary(object): def__init__(self):
self._sut_path = os.path.join(os.path.dirname(__file__),
'..', 'sut', 'login.py')
self._status =''defcreate_user(self, username, password):
self._run_command('create', username, password) defchange_password(self, username, old_pwd, new_pwd):
self._run_command('change-password', username, old_pwd, new_pwd) defattempt_to_login_with_credentials(self, username, password):
self._run_command('login', username, password) defstatus_should_be(self, expected_status):
if expected_status !=self._status:
raiseAssertionError(Expected status to be '%s' but was '%s'.% (expected_status, self._status)) def_run_command(self, command, *args):
command = [sys.executable, self._sut_path, command] +list(args)
process = subprocess.Popen(command, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
self._status = process.communicate()[0].strip()

robotframework笔记4的更多相关文章

  1. robotframework笔记2

    法文件和目录 层次结构安排测试用例构建如下: 在创建测试用例 测试用例文件 . 自动创建一个测试用例文件 测试套件 包含 测试用例文件. 一个目录包含测试用例文件形成一个更高级别的测试 套件. 这样一 ...

  2. robotframework笔记25

    library文档工具(Libdoc) Libdoc是机器人框架内置的工具生成的关键字的文档 测试库和资源文件的HTML和XML格式. 前 格式适用于人类,后者 骑 和其他 工具. Libdoc显示库 ...

  3. robotframework笔记26

    测试数据文档工具(Testdoc) Testdoc是机器人框架内置的工具生成高水平 根据测试用例文档. 创建的文档是在HTML中 格式和它包括名称.文档和其他元数据 测试套件和测试用例,以及和他们的顶 ...

  4. robotframework笔记22

    创建测试库 支持的编程语言 机器人框架本身是用写的 Python 和自然的测试 库扩展它可以使用相同的实现 语言. 运行时框架上 Jython ,图书馆也可以 实现使用 Java . 纯Python代 ...

  5. robotframework笔记20

    配置执行 选择测试用例 机器人框架提供了几个选择的命令行选项 执行测试用例. 也工作在相同的选项 后处理输出与 Rebot . 通过测试套件和测试用例的名称 测试套件和测试用例可以选择通过他们的名字的 ...

  6. robotframework笔记19

    后处理输出 使用时自动测试 在测试执行报告和日志生成,并使用它 分别允许创建自定义报告和日志以及结合 和合并的结果. 使用Rebot 简介 rebot [options] robot_outputs ...

  7. robotframework笔记17

    执行测试用例 基本用法 机器人框架从命令行执行测试用例,和 最终的结果是,在默认情况下,一个 输出文件 以XML格式和一个HTML 报告 和 日志 . 执行后,可以组合和输出文件 否则 进行后期处理  ...

  8. robotframework笔记11

    测试用例的语法 基本语法 测试用例构造测试用例表中可用 关键词. 关键字可以进口 测试库 或 资源 文件 或创建的 关键字表 的测试用例文件 本身. 测试用例表中第一列包含测试用例的名称. 一个 测试 ...

  9. robotframework笔记8

    文件变量 包含变量类型 Python 的 '.py' 扩展文件只不过是变量文件. # -*- Coding: utf-8 -*- var01 = "Hello " var02 = ...

随机推荐

  1. centos6.6下编译安装mysql5.6之后启动失败:Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

    今天在编译安装mysql5.6时候出现Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysq ...

  2. Monkey类、People类和主类 E。

    package jicheng; public class Monkey { private String s; public String getS() { return s; } public v ...

  3. IP地址验证

    /** * 验证IP地址 * * @param 待验证的字符串 * @return 如果是符合格式的字符串,返回 <b>true </b>,否则为 <b>false ...

  4. .Net 使用文件上传控件FileUpload上传图片

    例1: 来源:http://long546324.iteye.com/blog/349946 Default.aspx文档: <%@ Page Language="C#" A ...

  5. js 立即执行函数,() .则前面的function 是表达式,不能是函数申明

    fnName(); function fnName(){     ... }//正常,因为‘提升’了函数声明,函数调用可在函数声明之前 fnName(); var fnName=function(){ ...

  6. 初识redis——mac下搭建redis环境

    一.redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有 ...

  7. Mono for Android布局控件属性小结

    1. layout_weight 用于给一个线性布局中的诸多视图的重要度赋值. 所有的视图都有一个layout_weight值,默认为零,意思是需要显示 多大的视图就占据多大的屏幕空 间.若赋一个高于 ...

  8. Git学习(1)Git 简介

    Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. Git ...

  9. JavaWeb学习总结(十五)--过滤器的应用

    一.解决全站字符乱码(post和get中文编码问题) 乱码问题: 获取请求参数中的乱码问题: POST请求:request.setCharacterEncoding("utf-8" ...

  10. RedHat 7配置yum源

    卸载自带的yum软件包 rpm -e yum-utils--.el7.noarch --nodeps rpm -e yum-rhn-plugin--.el7.noarch --nodeps rpm - ...