序言:很多人都对自动化测试框架痴迷,我曾经也痴迷过一段时间,以前觉得自己对框架说的头头是道,现在回过头来看以前,说归说,但在如何应用还是欠缺,这一段时间,自己经历了一系列框架的构建和应用的时期,所以,我想主要从实际原理和应用上来说说测试框架,这些框架包括:关键字测试框架robot,基于各种语言的STAF框架,集成测试框架Fit(husdon),以及elipse TPTPd性能测试框架等。这不是一套工具教程,而是一套应用的简单思想,个人难免有局限性,见谅。

  首先,看看robot framework吧

  一、robot介绍

  大家上网查robot,相信能查到这么几个资料;

  1、robot的快速入门,就是如何简单使用robot,这是翻译过来的教程。个人觉得,一般人拿到这个教程容易懵,因为你是在不了解其原理的基础上操作,所以会遇到很多问题而无法向下进行。

  2、 robot的源码分析,讲讲robot怎么一步一步工作的,现在robot框架不断升级,这个源码分析教程有点旧了,所以代码有些不一样。

  Robot是一个完全基于关键字测试驱动的框架,它即能够基于它的一定规则,导入你的测试库(例如:其集成了selenium的测试库,即可以理解为操作web控件的测试底层库),然后基于这些测试库,你能应用HTML、TXT等文档形式编写自己的关键字(这些关键字即你的库组成),之后,再编写测试用例(测试用例由测试关键字组成)进行测试。例如:一个简单的登陆测试由:登陆+输入密码+登出三个关键字组成,也可以由一个关键字登陆组成,关键字颗粒的大小可以自行定制。

  二、robot原理

  robot的基本运作流程如下:

  1、robot开始测试是从cmd命令输入,robot初始运行程序接收命令字符(主要是用TXT或者HTML写的测试用例集)

  2、接收之后,robot先生成初始化全局变量配置,主要是定义一系列的字段名称和文件名称(例如:日志文件名称等)(由settings.py中的类完成)

  3、之后,开始解析用例文件,生成数据对象,数据对象中包含了测试集的各种数据,例如:测试用例集名称、各个测试用例名称、各个关键字名称等。

  4、将测试数据对象传送给测试集合类处理,生成测试集suite对象.

  5、之后,进行suite中的用例测试,然后调用关键字,找到关键字对应的库文件,进行操作。

  6、每一个操作和结果都写在输出的xml文件中(有专门调用对输出xml进行操作的类)

  7、测试完成后,调用转换类将xml文件转换成相应的HTML日志报告,测试完成。

  三、robot的应用

  robot的缺陷在于不够灵活,有些地方对我们普遍不适用,所以,我们需要会将robot分解,取之我们能用的,以下提供几个分解方式

  1、robot的需要用命令行的方式去启动测试,我们可以更改为自行写一个测试执行客户端界面,选取相应测试用例集合,下发到robot框架的程序入口。

  2、robot的用例格式需要固定,而我们很多时候都有自己的自动化测试用例编写规则,这样的话,我们可以写一个转换器,可以将自己的测试用例解析文件解析为robot可识别的用例文件。

  3、第2个的另外一种解决方法就是:做一个数据解析器,将我们的测试用例生成传送给测试集合的数据对象的对象规范

  4、Robot的日志文档很好,如果我们有自己的关键字测试框架,但需要调用robot的日志api,则可以:1)因为robot是解析xml文件生成Html的,我们可以调用python的xml操作库生成符合robot的xml格式的输出文件,然后调用robot的转换库生成Html即可。2)我们可以直接重构robot的xml输出类,简化成我们的形式即可。

  而在实际脚本的应用好处就是

  1、关键字思想驱动的好处就是应用封装的思想,保证了上层脚本的变动性可控,增强了维护性。

  2、容易定位问题,一般我们定位测试问题,首先,是从用例—功能—单个操作。而线性脚本则是相反的,所以会不好定位。

  总结:

  1、很多框架不一定能拿来就用,我们要做的是分析源码,学会拆分框架,取之自己能用的,开源的框架一般代码结构都挺良好,接口定义挺清楚。尽可能的不要造车的同时还要自己造轮子。

  2、从robot上面,我们可以很好的学习到关键字测试驱动思想和数据测试驱动思想的应用。

自动化测试框架之robot framework的应用分析的更多相关文章

  1. 简单介绍下自动化框架:Robot Framework

    一.简介: Robot Framework:Robot Framework是由Python编写的一款功能丰富并且扩展性强的自动化测试框架,也可以在Java和 .NET 上运行. HttpRunner: ...

  2. Robot Framework(十七) 扩展RobotFramework框架——扩展Robot Framework Jar

    4.4扩展Robot Framework Jar 使用标准JDK安装中包含的jar命令,可以非常简单地向Robot Framework jar添加其他测试库或支持代码.Python代码必须放在jar里 ...

  3. 基于selenium+Python3.7+yaml+Robot Framework的UI自动化测试框架

    前端自动化测试框架 项目说明 本框架是一套基于selenium+Python3.7+yaml+Robot Framework而设计的数据驱动UI自动化测试框架,Robot Framework 作为执行 ...

  4. 基于Python3.7 Robot Framework自动化框架搭建

    一.Robot Framework 和 Selenium 的区别(面试常问) 主流自动化测试框架有Robot Framework 和 Selenium,请根据实际场景选用不同的框架,以下总结各自优缺点 ...

  5. 【转】推荐4个不错的Python自动化测试框架

    之前,开发团队接手一个项目并开始开发时,除了项目模块的实际开发之外,他们不得不为这个项目构建一个自动化测试框架.一个测试框架应该具有最佳的测试用例.假设(assumptions).脚本和技术来运行每一 ...

  6. Robot Framework测试框架学习笔记

    一.Robot Framework框架简介         Robot Framework是一种基于Python的可扩展关键字驱动自动化测试框架,通常用于端到端的可接收测试和可接收测试驱动的开发.可以 ...

  7. Robot Framework使用Phantomjs进行无界面UI自动化测试

    Robot Framework 是一款关键字驱动的验收自动化测试框架,现在在国内使用的越来越广泛了.一种通用的Web UI自动化测试解决方案是Robot Framework+Selenium2Libr ...

  8. Robot Framework 自动化测试

    Robot Framework 自动化测试 RIDE 是 Robot Framework 测试数据的编辑器.它使测试用例的创建.运行.测试项目的组织可以在图形界面下完成. 通过 RIDE 去学习和使用 ...

  9. 基于Robot Framework的接口自动化测试

    Robot Framework框架简介 Robot Framework框架是一个通用的验收测试和验收测试驱动开发的自动化测试框架(ATDD),使用的是关键字驱动的测试方法.它本身拥有强大的标准库,此外 ...

随机推荐

  1. Gym 100883J palprime(二分判断点在凸包里)

    题意:判断一堆小点有多少个在任意三个大点构成的三角形里面. 思路:其实就是判断点在不在凸包里面,判断的话可以使用二分来判断,就是判断该点在凸包的哪两个点和起点的连线之间. 代码: /** @xigua ...

  2. 【转】Intellij Idea识别Java Web项目

    使用maven生成一个Java项目,手动添加相应的web目录WEB_INF,web.xml等,此时idea没有自动识别为web项目,此时编辑web.xml文件会出现一些不该出现的错误,需要做的就是让i ...

  3. GloVe:另一种Word Embedding方法

    若想深层地理解GloVe和本文,最好了解SVD, word2vec(skip-gram为主)的相关知识.若仅寻求一种新的word embedding方法,可以不必了解以上前置知识. 一言以蔽之,Glo ...

  4. Js自学学习-笔记6-8

    <!-- 第6-7课笔记 --> <!-- for循环 for(条件1:判断:变化)其实就是if嵌套 while do for循环简化版 可以用do while swith case ...

  5. javaEE(2)_http协议

    一.HTTP协议简介 1.客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式.dos环境下可直接通过telnet ...

  6. 五. web开发基础

    一.HTML 二.CSS 三.JavaScript 四.web框架 1.web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 ...

  7. 个人总结NDIS中NDIS_PACKET,NDIS_BUFFER的关系

    // // NDIS_PACKET结构的定义 // typedef struct _NDIS_PACKET { NDIS_PACKET_PRIVATE Private; //这个其实是一个链表结构,P ...

  8. 在centos7中为php7安装redis扩展

    在此之前一直是用php5.6,安装redis也没遇到啥问题,嗖嗖的就安装上了 更新php版本到php7后,编译的时候报错 include <ext/standard/php_smart_str. ...

  9. Python3 中 configparser 模块解析配置的用法详解

    configparser 简介 configparser 是 Pyhton 标准库中用来解析配置文件的模块,并且内置方法和字典非常接近.Python2.x 中名为 ConfigParser,3.x 已 ...

  10. centos7 安装nodejs 最新版

    笔者在安装时,node为11.0.0版本.这里以11版本为例,以后更新,安装步骤时一致的. 下载node安装包到指定目录 wget https://npm.taobao.org/mirrors/nod ...