• 接口测试框架


    接口测试不像UI测试有界面,比较直观,其实核心的测试思想都是一致的,主要验证接口是否通,接口之间的传递是否正常,把正常的情况考虑进去,再考虑一些异常情况。一般的接口测试可以用浏览器插件,如postman、restclient等,接口较多的话也可以用loadrunner、jmeter、soapui等工具,目前业内用的比较多的还是自己封装一套测试框架,进行自动化测试。

    近日整理了一下接口的测试框架,虽然比较low,但也算自己的成果和总结,目前这套框架的主要工作量是在excel中写用例上,即把ip、端口、请求方式,参数及响应的参数值等在excel中配置好后,由用例层去调起这个sheet页,然后交给数据驱动,数据驱动根据配置的优先级去读取测试数据,把符合用例优先级的测试数据提供给测试类。测试类把测试数据再提供给执行器,由执行器去请求,并把请求结果存到对象中。供后者调用使用。

    接口测试中比较麻烦的还是对返回结果的一个断言,有的接口返回结果简单,有的接口返回结果比较复杂,json中有数组,且字段多。具体我们以什么为预期结果,还是得实际情况实际考虑,可以从数据库中取值,也可以设定好场景,存为国定值。

    下图是我简单画了一个流程图,不对之处还望读者指出。

    拿其中的结果存储举例。excel的样式

    1.要自动存储到excel中的话,需要知道存储的目标位置,这里定义了一个枚举,是excel中的表头。

    package com.core.ienum;
    /** 
     * @author QiaoJiafei 
     * @version 创建时间:2016年3月4日 下午3:41:00 
     * 类说明 
     */
    public enum ExcelHeaders {
        StatusCode(){
            @Override
            public String toString() {
                return "StatusCode";
            }
        },
        ResponseJson(){
            @Override
            public String toString() {
                return "ResponseJson";
            }
        },
        ResultCode(){
            @Override
            public String toString() {
                return "ResultCode";
            }
        },
        Result(){
            @Override
            public String toString() {
                return "Result";
            }
        },
        RUN(){
            @Override
            public String toString() {
                return "RUN";
            }
        };
        ExcelHeaders() {
        }
    }

    2、再定义一个方法,是返回这个表头的所在列数

        private int getheaderColNum(ExcelHeaders headers) {
            int colNum = 0;
            int startCol = 3;
            int paramcount = Integer.parseInt(OptionFile.getExcel("./excel/testresultnew.xls", sheet, 1, 4));
            
            switch (headers) {
            case StatusCode:
                colNum = startCol+paramcount+1;
                break;
    
            case ResponseJson:
                colNum = startCol+paramcount+2;
                break;
                
            case ResultCode:
                colNum = startCol+paramcount+3;
                break;
                
            case Result:
                colNum = startCol+paramcount+5;
                break;
                
            case RUN:
                colNum = startCol+paramcount+6;
                break;
    
            default:
                break;
            }
            return colNum;
        }

    3、这样就有了excel的列数,行数是测试驱动类提供的,sheet页是测试驱动通过java反射获取到的,这样有了excel的sheet、行数、列数,就可以自动的存贮值了。

    4、json处理的话还是推荐用jsonpath,前面的文章已经讲过了。

    暂时先介绍到这吧。

  • 相关阅读:
    学习进度第七周
    NABCD---生活日历
    学习进度第六周
    人月神话阅读笔记(3)
    人月神话阅读笔记(2)
    人月神话阅读笔记(1)
    石家庄地铁查询(双人项目)
    学习进度第五周
    学习进度第四周
    返回一个整数数组中最大子数组的和。(续2)---二维数组
  • 原文地址:https://www.cnblogs.com/qiaoyeye/p/5311999.html
Copyright © 2020-2023  润新知