Python语言在自动化测试系统中的应用

发布于:2021-09-28 20:20:21

龙源期刊网 http://www.qikan.com.cn Python 语言在自动化测试系统中的应用 作者:华剑南 来源:《电子技术与软件工程》2017 年第 08 期 摘要 自动化测试系统在敏捷开发、持续集成和持续交付中起着非常重要的作用。它对加快新功 能发布,缩短现场问题解决时间,提升用户感受度,乃至提高企业竞争力都至关重要。本文结 合笔者在自动化测试系统建设中的实践,具体描述了利用 Python 语言设计完成的基于机器人 框架,关键字驱动的案例。最后指出了这套系统进一步改进的方向。 【关键词】自动化测试系统 机器人框架(Robot Framework,RF) 关键字驱动 Python 1 自动化测试系统实现简介 笔者参与开发的自动化测试系统,和编译服务器关联,由系统扫描侦测,实现基于某种策 略的版本自动下载(最大频度测试,最相关版本测试,如包含本测试组发现的软件缺陷版本优 先,或指定版本测试等),然后分发到相应设备,进行版本升级安装,触发测试用例的运行, 生成测试报告,发送邮件给项目干系人,更新测试记录等。 自动化测试系统,能实现在第一时间触发测试,能更频繁地测试各个版本,能运行更多、 更繁琐的测试,进而在缺陷出现时及时发现,帮助开发团队缩小缺陷出现的代码范围,便于定 位问题,解决问题,这为敏捷开发持续集成,持续发布提供了强有力的支撑。 自动化测试系统,基于机器人框架(robot Framework,RF),RF 有丰富的库,使用关键 字驱动技术,可以实现循环,选择等逻辑,测试用例中支持变量的使用,测试人员可以创建自 己需要的关键字,具有很大的灵活性和可扩展性,可以实现定制的复杂或特殊的功能。ride 是 RF 的编辑工具,测试用例可以用表格输入,使得测试人员以类似于自然语言的方式(关键 字)来描述测试用例, 即使没有编程基础的测试人员也容易上手,而 RF 会将关键字转化为测 试动作(底层即 Python 类方法,函数的调用)。 Python 是一种面向对象、解释型、跨*台的高级程序设计语言,可以应用于自动化测试, 数据分析等众多领域,Python 用代码缩进来代替花括号,表示语句块逻辑层次,既使得源程序 风格接*,又提高了可读性;Python 的类库齐全并且产出率高,实现相同的功能,Python 比很 多其他语言代码量少,这意味着易维护,出现问题的概率也下降。RF 就是一种基于 Python 的 可扩展关键字驱动的通用自动化测试框架。 2 Python 语言在自动化测试系统中的应用 龙源期刊网 http://www.qikan.com.cn 利用 RF 编写定制的测试用例,需要开发自己的关键字,编写自定义 python 库。下文通过 一个实例来介绍这个过程。 首先,在 python 安装目录 c:\Python27\Lib\site-packages\下新建一个文件夹 NewUE,文件夹名就是库名,然后,在该文件夹内创建一个 python 文件 ueclass.py,代码中定 义一个 UEClass 类,类中定义了一个 ue1Behavior 方法,该方法即 RF 中的新关键字。 在 NewUE 文件夹内再创建文件名 __init__.py 文件,RF 通过这个初始化文件获取新关键 字类。它的类名和库名相同, 括号里的类是 ueclass.py 中定义的类: fromueclass import UEClass classNewUE(UEClass): ROBOT_LIBRARY_SCOPE = 'GLOBAL' 自定义的 NewUE 库就创建好了,在 RF 的编辑器 ride 中导入这个库,然后即可使用新创 建的关键字。如果要新增关键字 ue2Behavior,只要在 UEClass 类中增加名为 ue2Behavior 的方 法即可。 导入新库,若库名显示为黑色,表明导入成功,若红色则表明导入失败。可以通过在一个 python 文件中 import NewUE 来调试,通常可以根据出错消息提示框,排除源文件中的错误。 修正错误后,把原来的 *.pyc 全删除,运行如下命令编译,然后重新导入: python -m compileallueclass.py python -m compileall __init__.py 如图 1 所示。 自动化测试系统的理想目标是全自动,在策略和任务定义好后,免予人工干预。为达到这 一目标,需要实现 RF 和其他系统的配合。下文介绍在这套系统中开发的三个重要模块:下 载,定制测试报告,邮件分发模块。 编译随时可能完成,系统需要有自动下载功能(关键字 Auto_DL)以免浪费时间, 基本 的过程如下, 首先系统处于空闲状态,即还未开始测试或上次测试任务已完成, Auto_DL 会 定时登录到指定服务器,检测是否有新版本编译完成,并判断该版本是否可用:按上文提及的 某种特定的策略选择新版本,判断该版本是否符合自动化测试的最低要求,例如已通过冒烟测 试,通过则可下载该版本,退出 Auto_DL, 触发下一个环节,升级安装该版本。这个过程循 环往复,以达到尽快测试符合策略的版本或尽可能多地测试各种版本等目的.本系统用 Python 自带的标准模块 urllib2, re 实现新版本侦测和判断是否为可用版本,发送 HTTP request,在获 龙源期刊网 http://www.qikan.com.cn 取的返回信息中,利用正则表达式标准模块 re 中的搜索函数 findall 和符合指定特征的正则表 达式判断是否需要下载新版本;用 Python 自带的标准模块 ftplib 实现文件下载, 直接导入 ftplib,生成一个 FTP 对象,连接到 ftp 服务器, 以写模式在本地打开接收文件, 接收服务器 上的文件并写入本地文件,最后关闭文件,完成下载工作。 下载完成后,系统自动安装并执行测试用例。RF 能产生测试报告,但是无法定制测试报 告,新开发的定制测试

相关推荐

最新更新

猜你喜欢