一、原理及特点

参数放在XML文件中进行管理

用httpClient简单封装一个httpUtils工具类

测试用例管理使用了testNg管理,使用了TestNG参数化测试,通过xml文件来执行case。

测试报告这里用到第三方的包ReportNG 项目组织用Maven

二、准备

使用工具:eclipse,maven

用到的第三方jar包:dom4j、reportng、testng

理解难点:httpUtils和xmlUtil工具类的封装;dom4j使用;CookieStore的应用

三、框架构思

1、项目结构

2、用例执行流程

3、接口调用流程

4、调度脚本流程

四、框架实现

1、输入参数

1.1 参数放在XML文件中进行管理

例:这里测试获取角色的接口输入参数为,page和rows,mapRole.xml内容如下

1.2 封装一个xmlUtil工具类负责读取XML,使用第三方的jar包dom4j

1.2.1 xmlUtil中readXMLDocument方法返回值为HashMap

public static HashMap  readXMLDocument(String beanName,String xmlName){

}

参数xmlName(xml文件的名字); 参数beanName(xml文件中节点的名称);

1.3 封装一个CookieUtil工具类,通过CookieStore储存cookie

1.3.1 CookieUtil类中setCookieStore方法返回值为CookieStore

public  CookieStore setCookieStore(HttpResponse httpResponse) {

}

1.4 用httpClient简单封装一个httpUtils工具类有get.post,put,delete方法

1.4.1 httpUtils中post封装方法如下:

public CloseableHttpResponse post(String url, Map params,CloseableHttpClient httpclient,CookieStore cookieStore){

}

2、返回参数

2.1 创建一个接口返回对象ResponseBean,

对象ResponseBean,包括status、statusCode、contentType、body、url、method、cookies

2.2 在工具类中在创建一个ReponseUtil工具类

ReponseUtil工具类负责将请求的返回数据CloseableHttpResponse 转换成ResponseBean

public ResponseBean setResponseBean(CloseableHttpResponse httpResponse) {

}

3、测试用例

测试用例管理使用了testNg管理 ,使用了TestNG参数化测试,通过xml文件来执行case

3.1 测试case脚本

public class GetRoleTest {

static CookieStore cookieStore ;

static CookieUtil cookieUtil=new CookieUtil() ;

CloseableHttpClient client;

HttpUtils httpUtils=HttpUtils.getInstance();

@Parameters({ "url", "objBean" ,"statusCode","xmlName"})

@BeforeSuite

/*

* 登录进入系统获取JSESSIONID放入到CookieStore中

* */

public  void TestLoginIn(String url ,String objBean, String statusCode,String xmlName) {

Map params=xmlUtil.readXMLDocument(objBean,xmlName);

client = HttpClients.createDefault();

CloseableHttpResponse httpResponse= httpUtils.post(url, params, client, cookieStore);

//cookieUtil.printResponse(httpResponse);

cookieStore=cookieUtil.setCookieStore(httpResponse);

}

@Parameters({ "url", "objBean" ,"statusCode","body","xmlName"})

@Test(priority = 2)

public  void TestGetRole(String url ,String objBean, String statusCode,String body,String xmlName) {

Map params=xmlUtil.readXMLDocument(objBean,xmlName);

client = HttpClients.custom().setDefaultCookieStore(cookieStore).build();

CloseableHttpResponse httpResponse= httpUtils.post(url, params, client, cookieStore);

ResponseBean rb=new ReponseUtil().setResponseBean(httpResponse);

//        add Assert

Assert.assertEquals("OK", rb.getStatus());

Assert.assertEquals(statusCode, rb.getStatusCode());

Assert.assertEquals(true, rb.getBody().contains(body));

}

@AfterSuite

public void closeClient(){

try {

// 关闭流并释放资源

client.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

[注] 因为API接口测试时每次都要校验Cookie,所有我们每次都先执行登录操作去获取Cookie

3.2 xml文件的编写

右键->run as ->TestNG Suite,这个场景的的测试用例就可以运行了

4、测试报告和项目组织

测试报告这里用到第三方的包ReportNG 项目组织用Maven

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

..........................................

..........................................

..........................................

UTF-8

TestGetRole.xml

.................这里写testNG对应的XML名称----------------------

TestGetUser.xml

..........................

org.apache.maven.plugins

maven-surefire-plugin

2.19

src/test/java/testSuites/${xmlFileName}

.................略............

..............这里的和properties中的xmlFileName想对应............

src/test/java/testSuites/${xmlFileName10}

org.apache.maven.plugins

maven-surefire-plugin

2.5

usedefaultlisteners

false

listener

org.uncommons.reportng.HTMLReporter

target/

maven-compiler-plugin

3.5.1

1.8

1.8

[注] 因为是maven的项目所以要将testSuite的xml文件放在maven的test目录下,这样右键pom.xml文件maven test,所有的测试用例就开始执行了

测试报告

框架目前存在的不足

1、数据库数据校验这一块的功能还没有完善,计划用MyBatis

2、参数使用了xml文件配置虽然灵活但有些繁琐,目前还没想到好的解决方案,testlink是否可以尝试一下呢

java接口测试框架搭建_接口自动化测试框架搭建相关推荐

  1. 对接接口文档_接口自动化测试框架设计思路

    接口自动化测试--框架设计思路 1 前言 之前文章跟大家分享了一下自己在接口自动化测试中进行测试准备的一些相关知识点,接下来本篇文章详细分享一下接口自动化框架设计的思路总结,希望能对初次探索接口自动化 ...

  2. python接口自动化测试框架pdf,Python接口自动化测试框架设计到开发完整版2019

    1:课程详细介绍.mp4 ; k& X* V: X! X% \; ]; u- V$ z7 L) h: C; h2:课程答疑.mp4+ J  K* q0 O  x + j( v2 n7 B7 s ...

  3. 一篇文章教你详细搭建API接口自动化测试框架

    目录 1 需求整理 1.1 实现目的 1.2 功能需求 1.3 其他要求 1.4 适用人员 1.5 学习周期 1.6 学习建议 2 详细设计 2.1 需求分析 2.2 技术栈 3 框架设计 3.1 框 ...

  4. JAVA零碎要点014---java+selenium环境搭建_浏览器自动化测试框架

    JAVA技术交流QQ群:170933152 1.安装.配置JDK1.6 配置JAVA_HOME 右击我的电脑-->属性-->高级系统设置-->高级-->环境变量 在Path中增 ...

  5. python自动化测试框架开发_Postar 接口自动化测试框架 基于python+requests+pytest实现...

    Postar 接口测试工具,基于python+requests+pytest实现. 特点 Postar makes it easier to interface testing more quickl ...

  6. python接口自动化测试框架实战从设计到开发_【B0753】[java视频教程]Python接口自动化测试框架设计到开发完整版视频教程 it教程...

    Java视频教程名称:Python接口自动化测试框架设计到开发完整版视频教程   java自学网[javazx.com]  Python视频教程   it教程 Java自学网收集整理 java论坛&q ...

  7. API接口自动化测试框架搭建(一)-总体需求

    (一)-总体需求 1 实现目的 2 功能需求 3 其他要求 4 适用人员 5 学习周期 6 学习建议 7 内容直达 8 反馈联系 1 实现目的 API接口自动化测试,主要针对http接口协议: 便于回 ...

  8. Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战

    一.Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00--框架结构简解 首先配置好开发环境,下载安装Python并下载安装pycharm ...

  9. 全网最强,接口自动化测试框架的设计与实现,精心整理,掌控自我拿高薪

    目录:导读 一.自动化测试框架 二.自动化测试框架思想 1.模块化测试脚本框架 2.测试库框架 3.关键字驱动或表驱动的测试框架 4.数据驱动测试框架 5.混合测试自动化框架 三.接口自动化测试框架策 ...

最新文章

  1. 百度重新定义「智能屏」,瞄准10后
  2. access9磅字体是多_第一套考试题
  3. python导入本地文件-Python使用import导入本地脚本及导入模块的技巧总结
  4. 带你深入理解分布式事务,掌握后台分布式核心技术,PS:送5本!
  5. Python 类继承,__bases__, __mro__, super
  6. 如何提升你的代码能力?
  7. 工作265:v-model实现原理 自定义组件使用v-model
  8. get方法请求返回一个文件_一键转换多种文件格式,完全免费,总有一个方法适合你...
  9. php程序设计简明教程
  10. java 读取 tgz_java – 从Spark中的压缩中读取整个文本文件
  11. 易宝支付 -- 微信小程序对接
  12. 伪随机数的爆破--2
  13. Linux-发送邮件
  14. python调用so库 undefind symbol_内嵌Python import时undefined symbol错误及解决 | 学步园
  15. 过滤器Filter方法详解(init,doFileter,destory)
  16. 理解线性变换和基(坐标)变换
  17. jdk,jre,ide概念辨析
  18. 李宏毅作业七其三 Network Compression (Network Pruning)
  19. Python : 程序提示SyntaxError: invalid syntax错误
  20. 自建cdn搭建_自建CDN

热门文章

  1. 计算机软考有学历限制吗,软考中级职称申请积分还需要学历吗?
  2. java 怎么用 string method return数量_java教程之Map应该怎么用
  3. java 当天唯一ids_java-为不同的时间字符串接收相同的ZonedDat...
  4. php foreach 收邮件_php机制本身不提供多线程的操作,有了swoole就不一样了
  5. 在CF卡上实现TrueFFS
  6. php 提取前一百个字,如何在PHP中提取字符串的前100個字符?
  7. 简单网络聊天程序java_基于Java实现hello/hi简单网络聊天程序
  8. libzdb 连接到mysql_MySQL 连接
  9. java 接口强制转换_三分钟学习Java泛型中T、E、K、V、?的含义
  10. python将字典作为参数传入函数