当前位置: 代码迷 >> .NET Framework >> Robot Framework 课程 (4)
  详细解决方案

Robot Framework 课程 (4)

热度:531   发布时间:2016-05-01 23:21:48.0
Robot Framework 教程 (4)

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 urllibimport urllib2class 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 xdef 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连接数据库进行介绍。

1楼胖子黎
Mark,感谢分享。
  相关解决方案