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,可以更贴合自己的业务逻辑,更加符合实际使用情况。

  • 相关阅读:
    LC 357. Count Numbers with Unique Digits
    LC 851. Loud and Rich
    LC 650. 2 Keys Keyboard
    LC 553. Optimal Division
    LC 672. Bulb Switcher II
    LC 413. Arithmetic Slices
    LC 648. Replace Words
    LC 959. Regions Cut By Slashes
    Spring框架学习之注解配置与AOP思想
    Spring框架学习之高级依赖关系配置(二)
  • 原文地址:https://www.cnblogs.com/sunsiyuan/p/7210674.html
Copyright © 2011-2022 走看看