• 如何搭建接口自动化测试框架


    接口自动化测试框架搭建

      一、原理及特点

      参数放在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是否可以尝试一下呢

    B站最完整Python接口自动化测试进阶教程合集!真实模拟企业项目实战,看完这套就够了

  • 相关阅读:
    (标签-机器学习|关键词-set)
    饼图可视化图表
    Exchangis1.0演讲稿
    15_星仔带你学Java之常用类②(字符串、随机数、日期、正则表达式)
    多线程之Semaphore原理
    嵌入式c语言
    车企内部文件传输数据效率太慢?那是没找到合适的文件传输工具
    Java中的JDBC如何连接数据库并执行操作
    lenovo联想台式机 拯救者 刃7000-28ICBR(90KX)原装出厂Windows10系统镜像
    【自动化测试】测试开发工具大合集
  • 原文地址:https://blog.csdn.net/dq565/article/details/133716059