序言:很多人都对自动化测试框架痴迷,我曾经也痴迷过一段时间,以前觉得自己对框架说的头头是道,现在回过头来看以前,说归说,但在如何应用还是欠缺,这一段时间,自己经历了一系列框架的构建和应用的时期,所以,我想主要从实际原理和应用上来说说测试框架,这些框架包括:关键字测试框架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. Scala 的list

    9.1 使用列表 列表类型:跟数组一样,列表也是同质化的(homogeneous).即所有元素都要是同种类型. 列表结构:所有列表由两部分组成:Nil 和 ::(cons). 基本操作:主要有三个:h ...

  2. java 读取文件转换成字符串

    public String readFromFile(File src) { try { BufferedReader bufferedReader = new BufferedReader(new ...

  3. Java IO流之字符缓冲流

    字符流: 1.加入字符缓存流,增强读取功能(readLine) 2.更高效的读取数据 BufferedReader 从字符输入流读取文本,缓冲各个字符,从而实现字符.数组和行的高效读取. FileRe ...

  4. javascript的offset、client、scroll使用方法

    offsetTop 指元素距离上方或上层控件的位置,整型,单位像素. offsetLeft 指元素距离左方或上层控件的位置,整型,单位像素. offsetWidth 指元素控件自身的宽度,整型,单位像 ...

  5. node.js中常用的fs文件系统

    fs文件系统模块对于系统文件及目录进行一些读写操作. 模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). 异步的 ...

  6. perl的bareword

    perl的bareword可能被认为:label  . 句柄 .函数 . 普通字符串. 上下文不同,解释器有歧义. 最好用 use strict; use warning;

  7. 常用模块之configpaser与shutil

    configparser模块 定义:configparser翻译为配置解析,即它是用来解析配置文件的 配置文件:用于编写程序的配置信息的文件 配置文件编写格式 配置文件中只允许出现两种类型的数据 se ...

  8. LeetCode 653. Two Sum IV – Input is a BST

    Given a Binary Search Tree and a target number, return true if there exist two elements in the BST s ...

  9. python中join()函数讲解

    本文简述的是string.join(words[, sep]),它的功能是把字符串或者列表,元组等的元素给连接起来,返回一个字符串,和split()函数与正好相反,看下面的代码理解. a=[" ...

  10. js的setInterval和setTimeout的那些浅坑

    setInterval和setTimeout的区别简单提一下 setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式.方法会不停地调用函数,直到 clearInterval() ...