Robot Framework - 一些练习
01 - 安装Robot Framework TA环境
根据系统请选择对应的版本包来安装,下面是以Win7-64bit系统为例,来说明如何搭建一个可以运行练习三test case的RF TA环境。
1)首先,要安装好版本对应的python环境,
C:\Users\guowli>python Python 2.7.8 (default, Jun 30 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
在命令行执行python,显示如上信息,则表示python安装成功。
添加环境变量到系统Path:”C:\Python27\;C:\Python27\Lib\site-packages;C:\Python27\Scripts”
2)安装Setuptools和pip,这两个是安装python扩展库的工具,可以在网络连通的情况下,简单快捷的安装所需要的扩展库。
3)安装Robot Framework。可以手工下载源码安装,也可以利用Pip工具来完成robotframework的安装,只需在网络连通的情况下,执行如下命令:”pip install robotframework”
安装完成后,验证一下:
C:\Python27\Scripts>pybot --version Robot Framework 2.8.5 (Python 2.7.8 on win32)
4)安装WxPython和Robot Framework IDE(RIDE)。WxPython是RIDE正常运行所必须依赖的,要先安装,否则在没有WxPython情况下,运行RIDE会出现如下提示:

注意:wxPython必须为2.8.12.1的版本
02 - 创建一个简单的测试用例
请按照如下顺序安装相应library,否则很可能安装失败。
- PyCrypto:Website of Michael Foord. Python programming articles, projects and technical blog.
- ecdsa : ECDSA cryptographic signature library (pure python)
- paramiko : SSH2 protocol library
- robotframework-sshlibrary : Robot Framework test library for SSH and SFTP

*** Settings ***
Library SSHLibrary *** Test Cases ***
SSHValidLogin
Open Connection 10.68.75.111 22
Loginmcadmin testsc
Writedf -h
Readdelay=0.5s
Start Command pwd
${pwd}Read Command Output
Should Be Equal ${pwd}/home/mcadmin
Close Connection
3- 获取帮助信息的方法:
- 鼠标:箭头单击相应关键字或参数等, 所指区域背景色会变换为黄色,并显示简要信息
- Ctrl键:选定关键字后,按Ctrl键会显示该关键字的详细信息。
- F5键:在RIDE界面,按F5键 出现”Search Keywords”窗口,可根据需求查找详细信息。也可根据source类别,查看某test library的全部关键字信息

03 - 了解Robot Framework标准库
http://robotframework.org/#test-libraries
BuiltIn : Contains generic often needed keywords. Imported automatically and thus always available.
An always available standard library with often needed keywords.
BuiltIn provides a set of generic keywords needed often.
It is imported automatically and thus always available.
http://robotframework.org/robotframework/latest/libraries/BuiltIn.html
OperatingSystem : Enables performing various operating system related tasks.
A test library providing keywords for OS related tasks.
OperatingSystem enables various operating system related tasks to be performed in the system where Robot Framework is running.
http://robotframework.org/robotframework/latest/libraries/OperatingSystem.html
04 - 创建连接数据库的测试用例
测试用例:Robot Framework连接Database,并进行简单操作;
- 较完整的case结构:包含测试集 、测试用例、变量、关键字、资源文件等
- 标准库及扩展库的安装引用
- 可重用的高层关键字
- 资源文件包含变量、关键字
- 资源文件的引用
- 根据相关日志调试,并使之测试通过
1.安装Robot Framework DatabaseLibrary
robotframework-databaselibrary有2个版本:Python和Java版
Python版下载地址:https://pypi.python.org/pypi/robotframework-databaselibrary/
下载并解压缩,然后在命令行,cd到此文件夹下,然后python setup.py install
验证安装是否成功:把DatabaseLibrary加入Library内,然后按F5,看是否出现相关内容
2.安装Python database applications
任何一个Robot Framework的Library基本上都是一个双层结构:
- 外层,实现标准接口供Robot Framework调用;
- 内层,实现具体的功能,提供API供外层进行封装。
Robot Framework DatabaseLibrary只是实现标准接口供Robot Framework调用,为了使它能够真正还需要一个符合Python数据库接口规范的库文件。
两部分缺一不可。
数据库接口:http://wiki.python.org/moin/DatabaseInterfaces
根据需求选择相应的DatabaseInterface下载安装。
示例1:安装MySQL数据库的Database Interfaces
https://wiki.python.org/moin/MySQL
从如上网页内容得知支持MySQL的DB API 2.0 Drivers有如下几种:
- MySQL for Python
- PyMySQL
- mxODBC
- pyodbc 。。。。。。
请根据实际需求(License、Platforms、Python versions、。。。)来选择使用
比如使用PyMySQL:https://github.com/petehunt/PyMySQL
下载包并解压,命令行进入此目录,运行“python setup.py install”即可;
示例2:安装SQLServer的Database Interfaces
https://wiki.python.org/moin/SQL%20Server
从如上网页内容得知支持SQLServer的DB API 2.0 Drivers有如下几种
- adodbapi
- pymssql
- mxODBC
- pyodbc 。。。。。。
请根据实际需求(License、Platforms、Python versions、。。。)来选择使用
比如使用pyodbc:http://code.google.com/p/pyodbc/downloads/list,下载对应的版本并安装;
Pyodbc同时也支持连接mysql,但还需要安装MySQL Connector:http://www.mysql.com/downloads/connector/odbc/
下载对应版本并安装,打开ODBC数据源(控制面板-管理工具-ODBC数据源),点击添加MySQL的ODBC。
安装完成后可以通过pip命令参看包的信息。

3.Test Case示例
通过Robot Framework验证MySQL数据库的一些信息;
Test--Database_Library
*** Settings ***
Library DatabaseLibrary
Resource test--resource-databaselibrary.txt *** Test Cases ***
test_DatabaseLibrary
Connect To Database Using Custom Params pymysql host='${hostIP}', port=${port}, user='${user}', passwd='${password}', db='mysql'
${version} query select version()
user-defined compare ${version} (('5.0.45',),)
${databases} query show databases
user-defined compare ${databases} (('information_schema',), ('mysql',), ('test',))
${count} Row Count show tables
user-defined compare ${count} 17
Table Must Exist user
Row Count Is Greater Than X select * from user 1
Disconnect From Database
test--resource-databaselibrary.txt
*** Variables ***
${hostIP} 10.68.75.203
${port} 3306
${user} root
${password} password *** Keywords ***
user-defined compare
[Arguments] ${arg1} ${arg2}
[Documentation] convert and compare
${convert} Convert To String ${arg1}
Should Be Equal ${convert} ${arg2}

4.问题处理
问题处理-1
运行testcase出现如下错误提示:
FAIL : OperationalError: (2003, 'Can\'t connect to MySQL server on \'10.68.75.203\' ((1130, u"Host \'10.140.1.177\' is not allowed to connect to this MySQL server"))')
解决方法
提示信息说明账号没有权限连接指定IP的主机,处理方法如下:
[root@localhost ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.45 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ' password ' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql>
命令说明
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
含义:允许root用户使用password密码从任何主机连接到mysql服务器。
GRANT ALL PRIVILEGES ON *.* TO 'root'@' 10.140.1.177' IDENTIFIED BY 'password' WITH GRANT OPTION;
含义:只允许root用户使用password密码从ip为10.140.1.177的主机连接mysql服务器。
问题处理-2
运行testcase出现如下错误提示:
FAIL : OperationalError: (2003, 'Can\'t connect to MySQL server on \'10.68.75.203\' ((1045, u"Access denied for user \'root\'@\'10.140.1.177\' (using password: YES)"))')
解决方法:
确认登陆的用户名及密码是否正确,如需更改用户名及密码请按照如下步骤操作:
# 关闭mysql: /etc/init.d/mysql stop 或 service mysqld stop
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root mysql mysql> UPDATE user SET Password=PASSWORD('新定义的密码') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit # 启动mysql :/etc/init.d/mysql start 或 service mysqld start
mysql -uroot -p 新定义的密码
05 - 创建测试库
参考信息:http://robotframework.org/robotframework/2.8.5/RobotFrameworkUserGuide.html#creating-test-libraries
1-确认要实现的内容
- 公式:(a+b)的a次方,a,b是正整数
- 有一网址(字符串),http://www.example.com?ip=192.187.111.198&code=12345&name=cat,想得到ip内容,即192.187.111.198
- (用户名+10位随机数+一个key)进行md5加密
2-编写test library
测试库以.py为后缀名,文件名与实现该测试库的模块名或者类名相同: <Class name>.py。
根据需要编写testlibrary,定义相关的class及函数等。
返回值在 Python中采用 return 语句。
CreatNewLibrary.py:
# -*- coding: utf-8 -*-
import re## re 模块提供了一系列功能强大的正则表达式 (regular expression) 工具
import hashlib## Secure hashes and message digests
import random## random 模块包含许多随机数生成器
import string## string 模块提供了一些用于处理字符串类型的函数, class CreatNewLibrary():
def ABA(self,a,b):
'''
公式:(a+b)的a次方,a,b是正整数
Example:
| ${c} | aba | 2 | 3 |
结果${c}=25
'''
return (int(a)+int(b))**int(a) def Find_IP(self,url):
'''
从网址获取IP地址
Example:
| ${ip} | Find IP | http://www.example.com?ip=192.187.111.198&code=12345&name=cat |
结果${ip}=192.187.111.198
'''
ip = re.findall('ip=(.*?)&',url,re.I)
if(ip and ip[0]!=''):
return ip[0]
else:
return "没有匹配到IP"
def MD5_RandStr(self,username,key='UYTYUT-65HGj-IYR8760-YRJKKL9'):
'''
(用户名+一个key)进行MD5加密,key有默认的,也可以执行设定
Example :
| ${string} | MD5 RandStr | tester |
| ${string} | MD5 RandStr | tester | UYTYUT-65HGj-IYR8760-YRJKKL9
'''
return hashlib.md5(username+key).hexdigest()
3-编译调试test library


4- 导入及确认test library
因为将test library文件放在了testcase的同一目录下,所以直接输入文件名全称即可。
如果test library文件在其他地方,要保证文件地址信息正确,或者以查找文件的方式导入也可。

正常的情况下,导入完成test library文件名称在settings中应显示为黑色。

按F5键,选择对应的Source名称,正常情况下,可以看到自定义库和说定义的关键字信息。

5- 应用test library :Test Case 的编写及调试
*** Settings ***
Force Tags CreatNewBasicLibrary
Library CreatNewLibrary.py *** Test Cases ***
CreatNewBasicLibrary
${c}ABA 2 3
Log${c}
${ip}Find IPhttp://www.example.com?ip=192.187.111.198&code=12345&name=cat
Log${ip}
${string1} MD5 RandStr tester
Log${string1}
${string2} MD5 RandStr tester123456-654321-98765-56789
Log${string2}

执行测试用例

Robot Framework - 一些练习的更多相关文章
- Robot Framework用户手册 (版本:3.0)
版权信息:诺基亚网络和解决中心 本翻译尊重原协议,仅用于个人学习使用 1.开始: 1.1 介绍: Robot Framework是一个基于Python的,为终端测试和验收驱动开发(ATDD)的可扩展的 ...
- RIDE -- Robot Framework setup
RobotFramework 是一款基于python 的可以实现关键字驱动和数据驱动并能够生成比较漂亮的测试报告的一款测试框架 这里使用的环境是 python-2.7.10.amd64.msi RID ...
- Robot Framework自动化测试 ---视频与教程免费分享
当我第一次使用Robot Framework时,我是拒绝的.我跟老大说,我拒绝其实对于习惯了代码的自由,所以讨厌这种“填表格”式的脚本.老大说,Robot Framework使用简单,类库丰富,还可以 ...
- Robot Framework 的安装和配置(转载)
Robot Framework 的安装和配置 在使用 RF(Rebot framework)的时候需要 Python 或 Jython 环境,具体可根据自己的需求来确定.本文以在有 Python 的环 ...
- 解决从jenkins打开robot framework报告会提示‘Opening Robot Framework log failed ’的问题
最新的jenkins打开jenkins robot framework报告会提示如下 Verify that you have JavaScript enabled in your browser. ...
- 在centos7中安装Robot Framework
安装前景介绍: 最初,我们是在Windows环境下搭建Robot Framework来对我们的服务进行接口测试的(想知道如何在Windows下安装Robot Framework,可以参考我同事的博客h ...
- 移动端自动化环境搭建-Robot Framework的安装
A.安装依赖 RF框架,robotframework本身. B.安装过程 可以通过下载 exe 程序进行安装,Robot Framework 分别提供了,win-amd64.exe 和 win32.e ...
- robot framework 安装配置
robot framework 是一款专门用作自动化测试的框架,提供了丰富的内置库,与第三方库,也支持用户自己编写的库,robot framework +library 可以 用来做ui的自动化测试, ...
- Robot Framework入门学习1 安装部署详解
安装注意: 目前Robot framework-ride不支持python3,安装时请下载python2.7版本. Robot Framework安装时出现了一点小问题,网上没有找到直接的介绍,现将安 ...
- Robot Framework自动化测试(七)--- jybot模式
虽然,很久不用关于Robot Framework框架了,但我这里应该是除了@齐涛-道长之外分享Robot Framework 相关资料比较多的地方了.所以,常常被问到一些关于该框架的问题. 虽然,我一 ...
随机推荐
- Jython 在 Eclipse 控制台报错 console: Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0.
在 Eclipse 中使用 Jython 时报错 解决办法 右键 --> Run As --> Run Configurations --> Arguments --> 设置 ...
- 实用的JavaScript手册
实用的JavaScript手册,收藏了,需要的时候可以翻阅 包含了 什么是JavaScript: JavaScript基础知识: JavaScript内置对象 JavaScript数据类型的操作方法 ...
- 通俗易懂--岭回归(L2)、lasso回归(L1)、ElasticNet讲解(算法+案例)
1.L2正则化(岭回归) 1.1问题 想要理解什么是正则化,首先我们先来了解上图的方程式.当训练的特征和数据很少时,往往会造成欠拟合的情况,对应的是左边的坐标:而我们想要达到的目的往往是中间的坐标,适 ...
- clouderamanager安装
下载地址 http://archive.cloudera.com/cm5/cm/5/ 安装 先安装manager,再安装cdh 待续
- jq无法获取ng-repeat元素,如何控制ng-repeat元素显示与隐藏?
之前都是在做微信小程序的页面,最近做一些html页面,页面也没什么效果,就弄了几个点击事件,控制一些元素的显示与隐藏.后面用angular来写这些页面,然后就遇到了问题,就是用ng-repeat生成的 ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第6周学习总结
20175316盛茂淞 2018-2019-2 <Java程序设计>第6周学习总结 教材学习内容总结 第7章 内部类与异常类 1.使用 try.catch Java中所有信息都会被打包为对 ...
- 实战操作——通过wireshark查看任意qq好友IP
今天有群里好友问我如何查看别人IP,查IP这个东西对于一些刚入门的小白来说可能是一个比较高大上的玩意,但是实际上只需一个网络协议分析工具就OK,废话不多说,下面开始实践 实验对象:任意QQ好友 操作工 ...
- web端代码提示
web端代码提示 这个功能是基本完成了,但是与需求不一致.但是废弃挺可惜的,所以就单独拿出来作为一个例子记录一下. 其中还包括了,java代码的自动编译和执行,在web端显示执行结果. 下载链接: h ...
- Java中十六进制转换 Integer.toHexString()
为了显示一个byte型的单字节十六进制(两位十六进制表示)的编码,请使用: Integer.toHexString((byteVar & 0x000000FF) | 0xFFFFFF00).s ...
- http中post和get方法区别