Robot Framework 教程 (4) - 自定义Library
RobotFrame Work为我们提供了包括OS、Android、XML、FTP、HTTP、DataBase、Appium、AutoIt、Selenium、Watir等大量的库。在使用过程中,除这些库之外,对于某些我们自己特定的应用逻辑,我们还需要开发自己的Library,以便于进行自动化测试。
本篇我们以baidu搜索英文时的自动翻译为例,介绍一下如何开发自己的Library。
0.目标
我们这次使用的示例的业务逻辑如下,打开baidu,搜索英文单词“Test”,查看页面中是否含有Test的自动翻译结果(我们以翻译结果“检验”做验证),手动执行效果如图

1.编写脚本
我们使用Python的urllib编写测试脚本,并保存到当前RobotFrame Work的测试项目目录下,文件名为MyLibrary.py 。
# -*- coding=utf-8 -*-
import urllib
import urllib2
class MyLibrary():
def Is_Translate(self,english,chinese):
u'''
检查输入的英文单词在进行baidu搜索时,是否调用了baidu英文翻译引擎
'''
#url地址
#url='https://www.baidu.com/s'
url='http://www.baidu.com/s'
#参数
values={
'ie':'UTF-8',
'wd':'test'
}
#进行参数封装
data=urllib.urlencode(values)
#组装完整url
#req=urllib2.Request(url,data)
url=url+'?'+data
#访问完整url
#response = urllib2.urlopen(req)
response = urllib2.urlopen(url)
html=response.read()
x=chinese in html
print x
def test():
lib=MyLibrary()
lib.Is_Translate( "Test", "测验")
if __name__ == '__main__':
test()
print 'finished'
在本地运行脚本,检验脚本的正确性。

2.引用自定义Library
在TestSuit节点上进行编辑,添加Library,Library名称为我们的脚本文件名MyLibrary.py 。

按F5键,查看刚刚引入的Library

3.添加测试用例
新建一个测试用例,命名为“百度翻译”。添加测试步骤“Is Translate”

此时看到所编辑行的两个单元格变为了红色,表示该关键字需要两个必填变量,对应我们的脚本中的两个参数。
添加变量,英文输入“Test”,对应检验结果为“测验”

4.运行测试
运行测试,此时,测试不通过

检查错误信息,错误信息为
Starting test: 百度搜索测试.兼容性测试.百度翻译 20150824 16:59:37.014 : FAIL : UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 490: ordinal not in range(128) Ending test: 百度搜索测试.兼容性测试.百度翻译
表示是我们的TestCase中的中文字符编码格式错误,此时需要调整以下RobotFrame Work在调用脚本进行运行时的系统编码格式。
5.增加中文支持
向脚本中添加代码,设置系统默认编码为utf8
#添加中文支持
reload(sys)
sys.setdefaultencoding('utf8')

6.再次执行

再次执行测试,测试通过,结果为Pass,表示被打开的页面中出现了我们所需要的“测验”字符。(作为简单示例,此时暂不考虑其它搜索结果中的输出问题,如果要进行严格的测试,应该对搜索后返回的html做解析,先定位到baidu翻译引擎的div位置,再对位置中的翻译结果做检查。)
总结:
本篇文章中,我们对如何建立自定义Library进行自动化测试,以及如何解决RobotFrame Work 自定义 Library 中的中文字符编码问题进行了介绍。通过编写自己的Library,可以更贴合自己的业务逻辑,更加符合实际使用情况。
下一篇中,我们将对如何使用RobotFrame Work连接数据库进行介绍。
Robot Framework 教程 (4) - 自定义Library的更多相关文章
- Robot Framework 教程 (3) - Resource及关键字 的使用
From:http://www.cnblogs.com/buaawp/p/4754399.html Robot Framework 教程 (3) - Resource及关键字 的使用 在进行软件自动化 ...
- Robot FrameWork 教程链接
1. Robot Framework 教程: http://cgmblog.sinaapp.com/html/category/robot-framework 2. Robot Framework ...
- Robot Framework 教程 (5) - 连接Oracel数据库
Robot Framework 提供了多种Library.其中Database Library可用来连接操作数据库. 1.安装Database Library 打开Robot Framework官网, ...
- Robot Framework 教程 (6) - 使用条件表达式
本篇文章,主要对如何在Robot Framework中使用条件表达式做过程控制作说明. 按照Robot Framework的官方文档介绍,Robot Framework并不建议在TestCase或Ke ...
- Robot Framework 教程 (2) - 页面元素定位
上一篇文章中,简单模拟了一个baidu搜索并截图的过程,在搜索过程中,我们需要对搜索框.搜索按钮进行定位.本篇文章主要介绍一下具体的定位方法. 我们的脚本如下: *** Settings *** Li ...
- Robot Framework 教程 (1) - 环境配置及简单网站兼容性测试
0.Robot Framework 简介 Robot Framework 是一个通用的自动化测试框架,主要用于“验收测试”和“验收测试驱动开发(ATDD)” (会其它文章中会详细介绍ATDD).它使用 ...
- Robot Framework 教程 (7) - 使用For循环
在自动化测试过程中,使用For循环来对某个动作进行重复操作是很普遍的行为.在Robot Framework中,各种测试库中均提供了多种方式的For循环结构,在其中覆盖了大部分类型的循环类型.而Robo ...
- robot framework教程-------虫师
http://www.testclass.net/2017/09/28/happy-holidays/
- Robot Framework 入门教程总结
Robot Framework 作为一款通用测试框架,可加载多种测试库.驱动多种测试工具,并可对各种自定义脚本进行集成.对于Robot Framework,我准备将其分为 入门--Robot Fram ...
随机推荐
- 如何启动 EDB*Plus
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页 由于EnterpriseDB公司的网站上讲的 ...
- 从Iris数据集开始---机器学习入门
代码多来自<Introduction to Machine Learning with Python>. 该文集主要是自己的一个阅读笔记以及一些小思考,小总结. 前言 在开始进行模型训练之 ...
- HBase数据模型的一些概念
首先来先理解一个概念:HBase是一种列式存储的分布式数据库. 表 在HBase中数据以表的形式存储.使用表的主要原因是把某些列组织起来一起访问,同一个表中的数据通常是相关的 ...
- c# 抓取和解析网页,并将table数据保存到datatable中(其他格式也可以,自己去修改)
使用HtmlAgilityPack 基础请参考这篇博客:https://www.cnblogs.com/fishyues/p/10232822.html 下面是根据抓取的页面string 来解析并保存 ...
- [算法]用JAVA实现快速排序
问题描述: 实现对数组的普通快速排序与随机快速排序实验要求: (1)实现上述两个算法 (2)统计算法的运行时间 (3)分析性能差异,作出总结 代码: 一:普通快速排序 public class Qui ...
- MYSQL创建表的约束条件(可选)
一.常用的一些约束条件 一.创建表的完整语法1.创建表的万能模板:create table 库名.表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型 ...
- bootstrap框架中data-toggle="tab"属性会取消a标签默认行为
这几天做公司项目用了bootstrap框架,在用导航组件的过程中,我发现在a标签里面添加data-toggle="tab"属性之后,这个a标签会失去默认行为,点击a标签的时候不会跳 ...
- 工作之路---记录LZ如何在两年半的时间内升为PM
引言 之前的伪PM纠结之路已经渐渐结束,LZ也终于正式爬上了PM的位置,对于LZ来说,这个时间比LZ预计的早来了两年半.说起来,两年半的速度已经算是比较快了,但这之中的努力唯有LZ一人知晓.写这篇文章 ...
- lua编程之元表与元方法
一. 前言 lua是一种非常轻量的动态类型语言,在1993年由由Roberto Ierusalimschy.Waldemar Celes 和 Luiz Henrique de Figueiredo等人 ...
- UART、SPI、I2C协议异同点
I2C.SPI.UART都是常见的低速板级通信协议,目前主流的SoC都内置了这些通讯协议的控制器,同样,各种传感器.Touch控制器.指纹模块.蓝牙模块.WIFI模块也都兼容这三种通信方式的一种或几种 ...