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

    1. 创建镜像 创建镜像的方法有三种: 基于已有镜像的容器创建 基于本地模板导入 基于Dockerfile创建 1.1 基于已有镜像的容器创建 该方法主要是使用docker commit命令,其格式 ...

  2. windows/Linux 常用命令

    windows 文件操作命令 cd 切换文件目录 dir 显示文件目录内容 md 创建文件夹 rd 删除文件夹 copy 拷贝文件 move 移动文件 del 删除文件 replace 替换文件 mk ...

  3. luogu2312 解方程 (数论,hash)

    luogu2312 解方程 (数论,hash) 第一次外出学习讲过的题目,然后被讲课人的一番话惊呆了. 这个题,我想着当年全国只有十几个满分.....然后他又说了句我考场A这道题时,用了5个模数 确实 ...

  4. 初涉KMP算法

    久仰字符串系列理论 KMP 讲解(引用自bzoj3670动物园) 某天,园长给动物们讲解KMP算法. 园长:“对于一个字符串S,它的长度为L.我们可以在O(L)的时间内,求出一个名为next的数组.有 ...

  5. Java学习经验

    随着Java学习的深入,越来越感觉记笔记的重要性,一方面可以使自己更加善于总结,提高对项目和自己的认知,另一方面可以让知识条例更加鲜明,并且加深对知识点的记忆.Java是一门很早开始兴起的语言,用途非 ...

  6. 小型LAMP搭建

    一.dns的搭建 安装dns服务 yum install bind 修改dns的主配置文件 [root@234c17 named]# vim /etc/named.conf // // named.c ...

  7. python--内置函数, 匿名函数

    一 . 内置函数 什么是内置函数? 就是python给你提供的. 拿来直接⽤的函数, 比如print., input等等. 字符串类型代码的执⾏ eval() 执⾏字符串类型的代码. 并返回最终结果( ...

  8. 牛客网暑期ACM多校训练营(第六场) J Heritage of skywalkert(数论, eth_element)

    链接: https://www.nowcoder.com/acm/contest/144/J 题意: 给定一个函数, 求它n次结果中任意两次的lcm最大值 分析: 首先要看出这个函数并没有什么含义, ...

  9. HDU 6447

    YJJ's Salesman Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  10. PAT Basic 1017

    1017 A除以B(20 分) 本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数.你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立. 输入格式: 输入在一 ...