接口自动化测试框架搭建【附详细搭建视频】

如果遇到什么问题建议观看下面视频:

【敢称全站第一】B站最全的Python自动化测试深度学习教程!学完即就业,小白也能信手拈来!帮你少走99%的弯路~

一、原理及特点
  参数放在XML文件中进行管理

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

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

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

二、准备
  使用工具:eclipse,maven

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

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

三、框架构思
1、项目结构
接口自动化测试框架搭建【附详细搭建视频】_第1张图片

2、用例执行流程

接口自动化测试框架搭建【附详细搭建视频】_第2张图片 

3、接口调用流程

接口自动化测试框架搭建【附详细搭建视频】_第3张图片 

4、调度脚本流程

接口自动化测试框架搭建【附详细搭建视频】_第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



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,所有的测试用例就开始执行了

测试报告

接口自动化测试框架搭建【附详细搭建视频】_第5张图片

 框架目前存在的不足

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

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

最后允许我对你们说一段话:

如果你也在往自动化测试开发方向发展

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势

我的自动化测试之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友特意花了一段时间整理编写了以上的《自动化测试工程师进阶路线》,也整理了不少【网盘资源】,需要的朋友可以扫描下方小卡片获取网盘链接。希望会给你带来帮助和方向。

你可能感兴趣的:(自动化测试,软件测试,自动化测试,压力测试,开发语言,测试工具)