java自动化-关键字驱动在junit接口自动化的应用

  本文是继承上文的基础上进行的讨论,建议读者先阅读http://www.cnblogs.com/xuezhezlr/p/9097137.html和https://www.cnblogs.com/xuezhezlr/p/9096063.html后在进行本文的了解,本文旨在对上文中的数据驱动在实际运用中的问题进行解答

  实际使用时,读者会发现原有的框架在一些场景中貌似运用的不是太好,比如订单完成接口,这时就要用到关键字驱动的方式,本文的关键字驱动与正规的有一定出入,不过还是从最正统的关键字驱动的思维发散出来了,真正的关键字驱动,核心就是代码中定义一些关键字,一旦满足一定的触发条件,就会直接触发对应的代码逻辑与操作,以达到目的

  所谓的数据驱动,确实会把数据和测试代码分割开来,但是在上文的方法中会发现,无论是excle形式的数据驱动还是数据库形式的,都会把数据抽象,具体实践中会把每一条测试用例以数据库中一条记录或者excle中的一行来展示,即把所有数据抽象成数据库中一条记录,但是订单完成这种接口会有一些问题

  这里要说一下,一般的公司订单完成,是用一个正常状态的订单,调用特定接口传一些参数,来完成更改订单状态并支付等操作,在自动化中,由于很难保证测试数据始终是正确的,往往需要自己创建一个正常状态的订单,然后再去拿着这个订单的订单号来调用接口,也就是说,订单号是变化的,在跑自动化任务时候生成的

  另一方面,在上文的框架中,基本都是写死的参数,这种变化的数据,临时生成的数据,将出现不兼容的问题,理论上我们需要两行数据,一行是调用创建订单时候的参数,第二行则是调用订单完成的参数,而如此做,代码将会很混乱,复杂度将直线提升

  因此,关键字驱动出现了,它的任务就是解决这种,类似于订单号这种特殊的参数,假设在接口测试中,订单完成接口在原有代码中我们要传一个orderno字段,这里的orderno需要一个正常的订单,那么,我们要做的事是输入一个关键字,让代码知道,我们需要这样的一个关键字,下面是部分代码

else if(value.indexOf(URLEncoder.encode("已创建订单买方出价orderId","utf-8"))!=-1){    value = value.replaceAll(URLEncoder.encode("已创建订单买方出价orderId","utf-8"), order.testorder11());}else if(value.indexOf(URLEncoder.encode("已创建订单买方出价ipId","utf-8"))!=-1) {    value = value.replaceAll(URLEncoder.encode("已创建订单买方出价ipId", "utf-8"), order.testorder11());}else if(value.indexOf(URLEncoder.encode("已创建订单卖方出价ipId","utf-8"))!=-1||value.indexOf(URLEncoder.encode("已创建订单卖方出价orderId","utf-8"))!=-1){    value = value.replaceAll(URLEncoder.encode("已创建订单卖方出价ipId","utf-8"), order.testorder12());}else if(value.indexOf(URLEncoder.encode("已创建订单卖方出价orderId","utf-8"))!=-1) {    value = value.replaceAll(URLEncoder.encode("已创建订单卖方出价orderId", "utf-8"), order.testorder12());}else if(value.indexOf(URLEncoder.encode("已完成订单orderId","utf-8"))!=-1){    value = value.replaceAll(URLEncoder.encode("已完成订单orderId","utf-8"), getData(order.testorder2(),"orderId"));}else if(value.indexOf(URLEncoder.encode("已预创建订单orderId","utf-8"))!=-1){    value = value.replaceAll(URLEncoder.encode("已预创建订单orderId","utf-8"), getData(order.testorder0(),"orderId"));}else if(value.indexOf(URLEncoder.encode("已预创建订单ipId","utf-8"))!=-1){    value = value.replaceAll(URLEncoder.encode("已预创建订单ipId","utf-8"), order.testorderzlr0());}else if(value.indexOf(URLEncoder.encode("已撤销订单orderId","utf-8"))!=-1){    value = value.replaceAll(URLEncoder.encode("已撤销订单orderId","utf-8"), getData(order.testorder3(),"orderId"));}下图是文档的截图

  上文中代码可以看到,在代码中会识别 已完成订单orderId,已撤销订单orderId等关键字,代码中看到了这个之后会直接执行对应的操作,然后再对字符串进行替换比方说原先是orderno,在文档中会直接把写作各种各样的关键字,比如是已撤销订单orderId,然后调用接口或者代码自身逻辑,直接生成一个对应状态的订单id,然后在把原先的数据替换一下就可以了  上文就是关键字驱动的代码核心了

  

原文地址:https://www.cnblogs.com/xuezhezlr/p/9127378.html

时间: 2024-10-08 03:20:11

java自动化-关键字驱动在junit接口自动化的应用的相关文章

2019虫师自动化 Python接口自动化虫师 robotframework虫师 虫师接口自动化源码下载

第一套:Python虫师自动化 [5.1G]┃ ┣━━Python接口测试 [2.7G]┃ ┃ ┣━━code [23.9K]┃ ┃ ┃ ┗━━myweb01.zip [23.9K]┃ ┃ ┣━━Python Web 接口开发与测试7_28.pdf [6.1M]┃ ┃ ┣━━02.(第二节)python_install.mp4 [82M]┃ ┃ ┣━━03.(第三节)python_calss_and_mudule.mp4 [126.9M]┃ ┃ ┣━━04.(第四节)python_excepti

postman+newman+node.js+git+jenkins实现接口自动化持续集成

缺少的配图会在后期慢慢更新出来 1 首先我们来说说postman+newman+node.js+git+jenkins它们之间的关系.首先jenkins只支持命令行模式,包含win的和linux的.postman的命令行运行环境是newman,而newman又依赖于node.js. 2 以上软件都是开源的,大家百度一下很容易找到. jenkins 地址 https://jenkins.io/download/ 其中jenkins下载war包放入tomcat启动. 在配置上win环境和linux配

Java + Excel 接口自动化

最近项目比较悠闲,想找点事干,写了个 Excel 接口测试的 "框架" 以前用 python 写过一个,这次用 java, 应该说框架都不算,反正就是写了,能帮我解决问题就行. 当然咯,也许会问干嘛那么麻烦直接用 feed4testng, 或者 testng 就行了,没事找事干还专门写个这玩意... 呵呵,就闲的蛋疼! 文笔有限不知道怎么写,直接上代码: 欢迎各位指定,或提出好的意见,总觉得还有很多不好的地方. 结构就这破样了, E 文也不好, 随便捣鼓,开心就好. 哈哈 ExcelU

接口自动化:HttpClient + TestNG + Java(一) - 接口测试概述+自动化环境搭建

1.1 接口测试简介 1.1.1 什么是接口测试 开始学习接口自动化测试之前,我们先要来了解什么是接口,以及什么是接口测试. 我们都知道,测试从级别上划分可以分为 组件测试 集成测试 系统测试 验收测试 其中在集成测试这个阶段,一个最主要的测试活动就是接口测试.在组件测试中,我们对单个组件自身的功能性能等指标进行验证,上升到集成测试级别,我们则进一步去验证组件之间的交互和集成.而组件之间的交互,就是通过'接口'来达成的.所以一定程度上,集成测试和接口测试概念是大幅度重叠的.(就组件集成/接口测试

Java接口自动化测试之集成MyBatis和MySQL (五)

pom.xml新增dependency 1 <dependency> 2 <groupId>org.mybatis</groupId> 3 <artifactId>mybatis</artifactId> 4 <version>3.4.4</version> 5 </dependency> 6 <dependency> 7 <groupId>mysql</groupId> 8

接口自动化简单框架

接口自动化简单框架 一.自动化测试分类: 1.数据驱动:根据数据(读取EXCEL数据)来测试 2.代码驱动:测试用例都是代码,通过读取代码测试 3.关键字驱动:UI自动化,根据封装好的工具,输入关键字测试,有点傻瓜式测试 点击 --> .click() 下一步 提交 --> .submit() { '点击':click() '提交':submit() } 二.自动化框架 自动化框架:可以理解为工具的集合.在日常工作中根据需要实现某些功能,封装起来.或结合其他自动化工具. 三.搭建数据驱动自动化

Jmeter+Maven+Jenkins+Git接口自动化流程

最近在实现 Jmeter+Maven+Jenkins+Git 接口自动化,研究不到两周,实现了 Jmeter+Maven+Jenkins+Git  接口自动化 的整体流程. 仅以此博客简单记录下自己实现的过程. 一. 职责.角色明确 Jmeter: 执行者,录制接口测试脚本,运行脚本,得到结果,生成报告,统计数据: Maven,Git :管理者, Maven 主要负责项目的依赖管理,Git 主要负责项目的代码管理: Jenkins:调度者,持续集成(CI)工具:构建.部署自动化:可以持续编译,运

python接口自动化5-Json数据处理

前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的参数就行,这时候就需要json来解析返回的数据了. 一.json模块简介 1.Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式,常用于http请求中 2.可以用help(json),查看对应的源码注释内容 Encoding basic P

关于接口自动化

本文主要介绍如何用Java针对Restful web service 做接口自动化测试(数据驱动),相比UI自动化,接口自动化稳定性可靠性高,实施难易程度低,做自动化性价比高.所用到的工具或类库有 TestNG, Apache POI, Jayway rest-assured,Skyscreamer - JSONassert. 简介: 思想是数据驱动测试,用Excel来管理数据,'Input' Sheet中存放输入数据,读取数据后拼成request 调用service, 拿到response后写