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的更多相关文章

  1. Robot Framework 教程 (3) - Resource及关键字 的使用

    From:http://www.cnblogs.com/buaawp/p/4754399.html Robot Framework 教程 (3) - Resource及关键字 的使用 在进行软件自动化 ...

  2. Robot FrameWork 教程链接

    1.  Robot Framework 教程: http://cgmblog.sinaapp.com/html/category/robot-framework 2.  Robot Framework ...

  3. Robot Framework 教程 (5) - 连接Oracel数据库

    Robot Framework 提供了多种Library.其中Database Library可用来连接操作数据库. 1.安装Database Library 打开Robot Framework官网, ...

  4. Robot Framework 教程 (6) - 使用条件表达式

    本篇文章,主要对如何在Robot Framework中使用条件表达式做过程控制作说明. 按照Robot Framework的官方文档介绍,Robot Framework并不建议在TestCase或Ke ...

  5. Robot Framework 教程 (2) - 页面元素定位

    上一篇文章中,简单模拟了一个baidu搜索并截图的过程,在搜索过程中,我们需要对搜索框.搜索按钮进行定位.本篇文章主要介绍一下具体的定位方法. 我们的脚本如下: *** Settings *** Li ...

  6. Robot Framework 教程 (1) - 环境配置及简单网站兼容性测试

    0.Robot Framework 简介 Robot Framework 是一个通用的自动化测试框架,主要用于“验收测试”和“验收测试驱动开发(ATDD)” (会其它文章中会详细介绍ATDD).它使用 ...

  7. Robot Framework 教程 (7) - 使用For循环

    在自动化测试过程中,使用For循环来对某个动作进行重复操作是很普遍的行为.在Robot Framework中,各种测试库中均提供了多种方式的For循环结构,在其中覆盖了大部分类型的循环类型.而Robo ...

  8. robot framework教程-------虫师

    http://www.testclass.net/2017/09/28/happy-holidays/

  9. Robot Framework 入门教程总结

    Robot Framework 作为一款通用测试框架,可加载多种测试库.驱动多种测试工具,并可对各种自定义脚本进行集成.对于Robot Framework,我准备将其分为 入门--Robot Fram ...

随机推荐

  1. 苏州Uber优步司机奖励政策(4月22日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  2. c++ 双向循环链表

    教学内容: 循环双链表 建立循环双链表 循环链表里插入结点 遍历循环链表 双向链表结构定义 struct stu_data { ];//学生名字 struct mytime stuTime;/ ...

  3. Deep Learning综述[上]

    Deep-Learning-Papers-Reading-Roadmap: [1] LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. "Dee ...

  4. 【BZOJ1050】[HAOI2006]旅行

    [BZOJ1050][HAOI2006]旅行 题面 bzoj 洛谷 题解 先将所有边从小往大排序 枚举钦定一条最小边 再枚举依次枚举最大边,如果两个点联通了就\(break\)统计答案即可 代码 #i ...

  5. svn检出项目后,serverlet包 报错

    因为缺少一个包    servlet-api.jar   没引.

  6. SpringBoot日记——Web开发篇

    准备开始实战啦!~~~~ 我们先来看,SpringBoot的web是如何做web开发的呢?通常的步骤如下: 1.创建springboot应用,指定模块: 2.配置部分参数配置: 3.编写业务代码: 为 ...

  7. Windows下Redis集群搭建

    1.第一步先安装Redis 参照<Windows下Redis安装及使用.docx> 在Redis目录E:/Redis下新建Logs文件夹,并且创建3个端口下的配置文件,记得修改里面的接口 ...

  8. 基于Redis实现分布式锁(续)

    代码实现: redis实现分布式锁(lock:通过间隔时间段去请求Redis,来实现阻塞占用,一直到获取锁,或者超时. unlock:删除redis中key)

  9. Bitcoin Core P2P网络层

    目录 数据结构 节点发现和节点连接 地址管理 节点发现 节点连接 插口(Sockets)和消息 Socket线程 (net.cpp) 消息线程 ProcessMessages (net_process ...

  10. 查询数据库时mapper报错:It's likely that neither a Result Type nor a Result Map was specified.

    因为mapper.xml里把resultType写成了parameterType