zoukankan      html  css  js  c++  java
  • 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,可以更贴合自己的业务逻辑,更加符合实际使用情况。

  • 相关阅读:
    zoj 3627#模拟#枚举
    Codeforces 432D Prefixes and Suffixes kmp
    hdu 4778 Gems Fight! 状压dp
    CodeForces 379D 暴力 枚举
    HDU 4022 stl multiset
    手动转一下田神的2048
    【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律
    poj 3254 状压dp
    C++中运算符的优先级
    内存中的数据对齐
  • 原文地址:https://www.cnblogs.com/sunsiyuan/p/7210674.html
Copyright © 2011-2022 走看看