如何在robotframework基础上使用数据驱动测试

一.写在前面

robotframework是很好用的关键字驱动测试框架,但是在实际工作中也有些地方使用不便,比如在我们设计参数校验测试case时,往往只是想修改校验参数类型而不得不做大量复制粘贴操作,最终导致了一个测试case中存在大量的冗余代码,而且如果在后续的使用中一旦出现变动,测试case将不便维护。

针对此情况,想到了尝试在robotframework功能基础上封装了一个轻型框架,用来实现部分接口测试场景的数据驱动方式的自动化测试。

二.所需组件说明

1.python2.7

2.robotframework

3.依赖库

Library RequestsLibrary

Library Collections

Library OperatingSystem

Library Process

Library String

Library XML

Library HttpLibrary.HTTP

Library DiffLibraryLibrary

../CustomKeyword.py(自定义依赖库)等等

4.excel && txt

 

三.测试用例工程说明

?

test-xxx-xxx         //测试case工程名

--→data                               //测试数据文件夹

---->api-test.txt            //供测试框架获取数据

---->api-test.xls           //方便tester进行case设计编辑

--→testcase                        //测试框架文件夹

---->xxxxxx-api.txt  //接口测试框架

--→start.sh                 //启动j脚本

CustomKeywork.py            //自定义关键字库

README.md                      //都知道

1.data文件夹中存放测试数据

?

2.testcase文件夹中存放测试用例实例,测试完成后的报告,启动脚本(其中txt文档为测试用例实例供robotframework调用,log.html,report.html,output.xml是测试报告,start.sh是启动脚本)

?

3.自定义测试库(一些测试用的函数)

?

data中存放的是具体接口的测试数据,可以使用excel对conf-api-test.xls进行配置也可以直接打开对应的txt进行编辑(注:最终工具执行测试时是读取txt文件,所以使用excel配置后需要用表格数据替换对应txt中的数据)

excel查看

?

不需要校验的内容使用?* 正则匹配掉

?

txt查看

?

其中数据分为四列

第一列:用例名称

第二列:用例执行开关(通过配置yes开启执行这条case,配置no不执行这条case)

第三列: 输入数据(接口请求调用的数据)

第四列:预期输出

四.架构工作流程

?

五.代码说明

1.图形化关键字图表说明

调用库以及设置全局变量的操作不变

?

?

2.自定义关键字说明

?

3.第三方关键字说明

变量赋值关键字

?

字符串拼接关键字

?

变量运算关键字

?

if条件判断关键字

continue关键字

?

断言失败继续执行关键字

?

正则匹配断言关键字

4.使用GET请求方式的区别

需要在请求调用之前,需要将unicode类型的输入数据转换成字典类型

?

?

六.对比

使用前

?

使用后

?

测试报告

?

七.后续

1.添加测试输出录制功能;

2.标准化测试数据格式,可以实现多工具兼容使用;

等等等等

原文地址:https://www.cnblogs.com/flowertester/p/11355636.html

时间: 2024-08-11 15:02:24

如何在robotframework基础上使用数据驱动测试的相关文章

RobotFrameWork接口报文测试-----(三)demo的加强版(数据驱动测试)

在上一篇RobotFrameWork接口报文测试-----(二)demo的升级版基础上,将接口的xml的格式保存在xml文件中,然后程序如果增加一个接口,在xml文件里添加即可,无需修改自动化测试里的其他模块,然后在工具加case就可以了,但是接口取值的数据全部都是直接在case里面录入的,也就是说,每增加一条测试用例,就需要在工具内添加一条case,测试数据始终都是在工具内控制,这让以前使用excel管理过测试数据的我感觉很不爽,总感觉得把数据放到excel内,然后实现数据驱动测试. 围绕着这

GPT分区基础知识及如何在GPT分区上安装WIN7

大硬盘和WIN8系统,让我们从传统的BIOS+MBR模式升级到UEFI+GPT模式,现在购买的主流电脑,都是预装WIN8系统,为了更好的支持2TB硬盘,更快速的启动win8,预装系统都采取了GPT分区的格式,并且主板bios支持UEFI启动. 如果您对这些专用名词比较陌生的话,笔者简单解释一下: MBR和GPT是两种不同分区形式,好比你买回来一块新硬盘,要划分成不同的区域,系统.工具.音乐等等,看你怎么分,传统的MBR模式只能分4个主分区,并且最大的支持2.1T硬盘.GPT可以分无数多分区,并且

Coded UI Test中的数据驱动测试

有关什么是Coded UI Test以及如何使用Coded UI Test可以查看我的另一篇文章:http://www.cnblogs.com/jaxu/p/3706652.html 本文主要介绍如何在Coded UI Test中使用数据驱动测试.考虑这样一个场景:开发人员提交了一个函数,该函数实现了一个数学公式的运算,通过接收两个数字并进行数学运算给出结果.测试人员根据给定的数学公式,需要考虑提供各种不同情况的值来循环测试该函数.显然,我们需要提供一个数据源,根据数据源中提供的不同的值来进行自

如何在Java平台上使用脚本语言做Java开发

如何在Java平台上使用脚本语言做Java开发     最近开始流行区分Java平台和Java语言,但很多Java开发者还是不能确定如何在 Java应用程序开发中结合脚本.本篇文章,Gregor Roth给出了在Java平台上使用脚本的方法.通过这篇文章,你可以了解怎样在你的Java应用程序中使用脚本,是否你要通过使用Groovy和 Jython把不同的Java应用程序模块粘合在一起,或者写一个你自己的基于JRuby的应用程序,适用于Java平台. 作为一个Java开发者,你可能已经注意到了,J

如何在Linux VPS上定制自己的Bash Prompt

提供:ZStack云计算 内容介绍 在管理Linux服务器时,命令行操作无疑是最为耗时的环节.对大多数用户而言,这意味着将大量时间用于操作Bash shell. 尽管大多数发行版都提供默认的用户类型与root prompts,但定制我们自己的prompt无疑有助于引入更多使用偏好.大家可以在其中纳入各类实用信息,帮助自己更有针对性地执行任务并在权限提升时得到提示. 在本示例中,我们将使用Ubuntu 12.04 VPS,但几乎所有现代Linux发行版都遵循类似的操作方法. 验证您的Shell为B

软件测试基础(四) 测试种类

安装测试 安装测试是为了确保软件可以正确地在客户的硬件设备上安装并运行. 兼容性测试 兼容性测试是指测试软件在特定的硬件平台上.不同的应用软件之间.不同的操纵系统平台上.不同的网络等环境中是否能够很友好的运行的测试.主要核心内容有1)测试软件是否能在不同的操作系统平台上兼容,或测试软件是否能在同一操作平台的不同版本上兼容:2)软件本身能否向前或向后兼容:3)测试软件能否与其他相关的软件兼容:4)数据兼容性测试,主要是指数据能否共享等. 健全测试和冒烟测试 健全测试是主要功能的简单测试,以决定系统

如何在响应式基础上提升移动性能///响应式不是万能的!教你提升响应式设计的移动性能(一)

如何在响应式基础上提升移动性能 摘要:如何在响应式基础上提升移动性能,从细节做起,结合网站,做好响应式页面的设计优化工作.,随着互联网的高速发展,合肥网站建设小编今天为大家介绍,为解决移动性能的响应式页面设计并不是万能的,而应该不断的改进,从而更好的为用户服务.随着互联网的高速发展,例如近段时间炒得火热的谷歌申请的无人机技术,以及电商门户网站阿里巴巴的上市等等,这都促进了互联网日新月异的变化. 所以作为网站seo人员不应固步自封,而应该努力的跟上时代的步伐,不仅需要学习相关的seo知识,而且对于

如何在Windows系统上用抓包软件Wireshark截获iPhone等网络通讯数据

http://www.jb51.net/os/windows/189090.html 今天给大家介绍一种如何在Windows操作系统上使用著名的抓包工具软件Wireshark来截获iPhone.iPad等iOS设备或Android设备的网络通讯数据的方法 不管是iPhone的iOS还是Android系统上开发的应用App基本上都会需要使用网络通讯来传输数据.开发者有的时候可能会需要通过抓包的方式来了解应用具体在传输些什么数据,以及数据是否正确.今天给大家介绍一种如何在Windows操作系统上使用

robot framework :获取原有文本编辑框内的数据,然后在原有数据的基础上在赋值

需要实现的功能:获取原有文本编辑框内的数据,然后在原有数据的基础上在赋值 备注:由于自己是个新手,所以只能利用最笨的方式来实现.如果以后有的更方便的实现方式,则再更新. 操作: ${text}    Get Value    [ locator ]                #获取文本框内的原有的数据 log    ${text} Input Text    [ locator ]    ${text}测试          #获取原有的数据后,在原有数据的基础上添加新的数据