2022年全网最全接口自动化测试框架搭建,没有之一

接口自动化测试框架搭建

  一、原理及特点

  参数放在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内容如下

  <?xml version="1.0" encoding="UTF-8"?>

  

  

  

  

  

  

  

  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 AssertAssert.assertEquals("OK", rb.getStatus());Assert.assertEquals(statusCode, rb.getStatusCode());Assert.assertEquals(true, rb.getBody().contains(body));}@AfterSuitepublic void closeClient(){try {// 关闭流并释放资源client.close();} catch (IOException e) {e.printStackTrace();}}}

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

3.2 xml文件的编写

<?xml version="1.0" encoding="UTF-8"?>

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

4、测试报告和项目组织

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

4.0.0..............................................................................................................................UTF-8TestGetRole.xml.................这里写testNG对应的XML名称----------------------TestGetUser.xml..........................org.apache.maven.pluginsmaven-surefire-plugin2.19src/test/java/testSuites/${xmlFileName}.................略..........................这里的和properties中的xmlFileName想对应............src/test/java/testSuites/${xmlFileName10}org.apache.maven.pluginsmaven-surefire-plugin2.5usedefaultlistenersfalselistenerorg.uncommons.reportng.HTMLReportertarget/maven-compiler-plugin3.5.11.81.8

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

  测试报告

  框架目前存在的不足

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

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

最后在我的QQ技术交流群里整理了我这10几年软件测试生涯整理的一些技术资料,包括:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如果在学习或工作中遇到问题,群里也会有大神帮忙解答,群号 798478386 ( 备注 今日头条555 )

全套软件测试自动化测试教学视频

300G教程资料下载【视频教程+PPT+项目源码】

全套软件测试自动化测试大厂面经

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章