RobotFramework 官方demo Quick Start Guide rst配置文件分析
RobotFramework官方demo Quick Start Guide rst配置文件分析
by:授客 QQ:1033553122
博客:http://blog.sina.com.cn/ishouke
欢迎加入软件性能测试交流QQ群:7156436
7、 启动和结束(Setup and Teardown) 6
1、 Demo下载
下载地址:demo for robotframework rst配置文件分析
2、 QuickStart.rsc文件
.. code:: robotframework
*** Test Cases ***
User can create an account and log in
[Tags] mytag
Create Valid User fred P4ssw0rd
Attempt to Login with Credentials fred P4ssw0rd
Status Should Be Logged In
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}
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
Clear Login Database finally
Clear Login Database
*** Keywords ***
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}
Clear Login Database
Remove file ${DATABASE FILE}
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
${error} 123456
${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
${ERROR} Creating user failed: Password must be 7-12 characters long
*** Settings ***
Suite Setup Clear Login Database
Test Teardown Clear Login Database
Force Tags quickstart
Default Tags example smoke
Library OperatingSystem
Library Lib/LoginLibrary.py
__ `Creating test libraries`_
3、 测试用例
User can create an account and log in
*** Test Cases ***
User can create an account and log in
[Tags] mytag
Create Valid User fred P4ssw0rd
Attempt to Login with Credentials fred P4ssw0rd
Status Should Be Logged In
用例由关键词及对应参数,设置和对应值组成。关键词和对应参数之间(比如关键词Create Valid User 和参数fred),参数与参数之间(fred和P4ssw0rd),设置和对应值之间(比如Tags和mytag)至少需要2个空格,或1个tab键分隔开,建议使用空格分隔。
行为驱动测试
使用行为驱动风格的测试用例(given-when-then)
*** 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
关键词(比如A user has a valid account)不带位置参数
数据驱动测试
通过[Template]设置把用例转为数据驱动,运行时,会提取case body下方的参数(如例中的abCD5 ${PWD INVALID LENGTH}),重复执行模版关键字(比如Creating user with invalid password should fail)
*** 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}
4、 关键字
关键字有两种:
类库关键字(Library keywords):来自引入的测试类库
用户关键字(user keywords):为构造测试用例使用表格语法(tabular syntax)创建的
注意:大小写除外,关键字要完全匹配,比如关键词单词之间不能多一个空格,少一个空格
1、类库关键词
测试类库(test libraries)可分成成标准类库(stand libraries),外部类库(external library)
还有自定义类库。标准类库随core framework一起发布,包括通用类库,如OperatingSystem,Screenshot 和Builtln。外部类库,比如Selenium2Library,必须独立安装。如果这些还不能满足需求,则自定义类库,比如本例中的LoginLibrary.py。
为了能使用测试类库提供的关键词,必须使用Library设置导入关键字。例中Remove File来自标准类库OperatingSystem。其它一些关键词,如Attempt to login with credentials来自自定义类库 LoginLibrary。
*** Settings ***
Library OperatingSystem
Library Lib/LoginLibrary.py
__ `Creating test libraries`_
注意:__ `Creating test libraries`_ 不能少,否则不会创建测试类库。
2、用户关键字
Robot Framework的一个强大功能就是可以通过其它关键字创建更高层级的关键词。
*** Keywords ***
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}
Clear Login Database
Remove file ${DATABASE FILE}
# 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
如上,关键字也可以携带参数。关键字还可以有返回值,甚至是FOR循环
5、 变量
变量定义
*** Variables ***
${USERNAME} janedoe
${PASSWORD} J4n3D0e
${error} 123456
${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
${ERROR} Creating user failed: Password must be 7-12 characters long
变量也可以通过命令行输入,特别是需要在不同环境执行的时候,这很有用。例如
robot --variable USERNAME:johndoe --variable PASSWORD:J0hnD0e QuickStart.rst
除了一些自定义变量,有一些内置变量也总是可用的。这些变量包括上述使例中使用的${TEMPDIR}和${/}
变量的使用
变量可在大部分测试数据中使用。如下,最常用于关键词的参数。从关键词返回的数据可以赋值给变量,并在后续使用。例如,以下的Database Should Contain 用户关键词设置数据库内容为${database}变量,然后确内置关键词(BuiltIn keyword) Should Contain确认。类库关键词和用户关键词都可以返回值。
*** 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
6、 组织测试用例
测试用例的集合,称为套件。每个包含测试用例的输入文件形成一个测试套件。执行 QuickStart.rst时,可在控制台输出看到测试套件 QuickStart 。该名字是从文件名继承的,在报告和logs中也可见。
可把测试用例文件放入某些目录,然后把这些文件目录在放入到其它目录中,即可嵌套。所有这些目录自动形参更高层级的测试套件,套件名字来源于目录名字。
运行执行套件
把.rst,html等配置文件放到套件所在目录下,然后运行命令 robot -s suite_name path_to_dir,如:
E:\Projects\studyproject>robot -s suite ./suite
7、 启动和结束(Setup and Teardown)
如果想让某些关键字在每个测试执行前、执行后都被执行,可在setting表中使用Test Setup和Test Teardown设置。类似的,可以使用Suite Setup和Suite Teardown设置来指整个套件执行前、执行后都需要运行的关键字。
单个用例也可在Test Cases 用例表中使用[Setup]和[Teardown]来自定义setup或teardown。方法同[Template]的使用。
*** Settings ***
Suite Setup Clear Login Database
Test Teardown Clear Login Database
8、 使用标签
Rf允许为测试用例使用标签,以给它们自由元数据。如下setting表,可用[Force Tags]和[Default Tags]为文件中的所有测试用例设置Tags。也可以用[Tags]为单个测试用例定义Tags。
*** Settings ***
Force Tags quickstart
Default Tags example smoke
Tags的一个重要应用是可选择需要执行的测试。例如
robot --include mytag QuickStart.rst #只执行携带mytag标签的用例
robot --exclude mytag QuickStart.rst #只执行不携带mytag标签的用例
注意:如果为单个用例指定了[Tags],那么该用例将无法拥有Default Tags,否则可拥有,而Force Tags则强制为所有用例设置Tags,即便用例已指定[Tags]也不影响。以上为例子,用例User can create an account and log in只包含quickstart和mytag
9、 创建测试类库
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os.path
import subprocess
import sys
class LoginLibrary(object):
def __init__(self):
self._sut_path = os.path.join(os.path.dirname(__file__),
'..', 'sut', 'login.py')
self._status = ''
def create_user(self, username, password):
self._run_command('create', username, password)
def change_password(self, username, old_pwd, new_pwd):
self._run_command('change-password', username, old_pwd, new_pwd)
def attempt_to_login_with_credentials(self, username, password):
self._run_command('login', username, password)
def login(self, username, password):
self._run_command('login', username, password)
def status_should_be(self, expected_status):
if expected_status != self._status:
raise AssertionError("Expected status to be '%s' but was '%s'."
% (expected_status, self._status))
def truncate(self):
self._run_command('truncatefile')
def _run_command(self, command, *args):
command = [sys.executable, self._sut_path, command] + list(args)
process = subprocess.Popen(command, universal_newlines=True, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
self._status = process.communicate()[0].strip()
参考连接:
https://github.com/robotframework/QuickStartGuide/blob/master/QuickStart.rst
RobotFramework 官方demo Quick Start Guide rst配置文件分析的更多相关文章
- RobotFramework RobotFramework官方demo Quick Start Guide浅析
RobotFramework官方demo Quick Start Guide浅析 by:授客 QQ:1033553122 博客:http://blog.sina.com.cn/ishouk ...
- Qt5官方demo分析集11——Qt Quick Particles Examples - Affectors
在这个系列中的所有文章都可以在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文Qt5官方demo解析集10--Qt ...
- Qt5官方demo解析集13——Qt Quick Particles Examples - Image Particles
本系列全部文章能够在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 接上文 Qt5官方demo解析集12--Qt Quic ...
- Qt5官方demo分析集10——Qt Quick Particles Examples - Emitters
此系列的所有文章都可以在这里查看http://blog.csdn.net/cloud_castle/article/category/2123873 前段时间去听了Qt在北京的开发人员大会,感觉QML ...
- RF《Quick Start Guide》操作总结
这篇文章之所以会给整理出来,是因为学了一个季度的RF后,再去看官网的这个文档,感触破多,最大的感触还是觉得自己走了不少弯路,还有些是学习方法上的弯路.在未查看这类官网文档之前,更多的是看其他各种人的博 ...
- SMJobBless官方Demo笔记
SMJobBless是苹果官方提供的用于"MacOS app获取root权限"的demo. 具体思路 使用Security.framework和ServiceManagement. ...
- Dubbo系列(3)_官方Demo说明
一.本文目的 通过Dubbo的官方Demo介绍,学会搭建一个简单的Dubbo程序,包括服务端.客户端.接口等. Demo地址:https://github.com/alibaba/dubbo/ ...
- 微信小程序官方demo学习
最近微信小程序很火,很喜欢那种轻应用,用完就走的理念.于是,下载好微信开发者工具,学习一下官方demo. 体验下来,有类似react和vue的感觉,dom类似react那种组件的,data-bindi ...
- spring-cloud-kubernetes官方demo运行实战
关于spring-cloud-kubernetes spring-cloud-kubernetes是springcloud官方推出的开源项目,用于将Spring Cloud和Spring Boot应用 ...
随机推荐
- Linux主机操作系统加固规范
对于企业来说,安全加固是一门必做的安全措施.主要分为:账号安全.认证授权.协议安全.审计安全.总的来说,就是4A(统一安全管理平台解决方案),账号管理.认证管理.授权管理.审计管理.用漏洞扫描工具 ...
- 微信小程序分包加载实战
"离线包"机制 微信小程序采用的是类似离线包加载方案,以转转小程序为例,当用户第一次打开时会先下载好所有代码,然后再加载页面:当用户再次进入转转小程序时,会直接使用已下载的代码,省 ...
- Go语言之Interface(二)
使用指针接收器和值接收器实现接口 type Describer interface { Describe() } type Person struct { name string age int } ...
- 设置build.gradle打包时自动加时间
在build.gradle中添加以下函数: def releaseTime() { return new Date().format("yyyyMMddHHmm", TimeZon ...
- Linux常用命令英文全称与中文解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法. pwd:Print working directory 意思是密码. su:Swith user 切换用户,切换到root用户 ...
- java ReentrantLock
介绍 ReentrantLock称为重入锁,比内部锁synchonized拥有更强大的功能,它可中断.可定时.设置公平锁 [注]使用ReentrantLock时,一定要释放锁,一般释放放到finnal ...
- More Effective C# 【前戏】
买了很多很多书,想到就买,觉得有需要就买.买书的情况是不一样的:有时候,买的时候还是比较空,买来之后工作开始忙起来了,就没怎么看:有时候,买的时候比较忙,忙的乱了方寸,觉得有必要找本书来静心一下.不过 ...
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署动态网站(二)--技术流ken
项目前言 在上一篇博客<Jenkins+Git+Gitlab+Ansible实现持续化集成一键部署静态网站(一)--技术流ken>中已经详细讲解了如何使用这四个工具来持续集成自动化部署一个 ...
- spark之JDBC开发(连接数据库测试)
spark之JDBC开发(连接数据库测试) 以下操作属于本地模式操作: 1.在Eclipse4.5中建立工程RDDToJDBC,并创建一个文件夹lib用于放置第三方驱动包 [hadoop@CloudD ...
- 【转载】Windows服务器修改远程桌面默认端口
因为 windows服务器远程桌面端口默认是 3389端口,使用系统默认端口的风险很大,很容易被攻击软件扫描以及攻击,同时频繁的扫描和攻击会导致服务器的 CPU 及带宽资源耗尽,因此为了保证服务器的安 ...