MilgGtery 发表于 2019-1-22 16:07:25

http接口测试—自动化测试框架设计

一、测试需求描述
    对服务后台一系列的http接口功能测试。
    输入:根据接口描述构造不同的参数输入值(Json格式)
    输出:字符串(传入的方式+传入的字符串)
    http://localhost:8090/lctest/TestServer

二、程序设计
    1、Client程序设计
      读取Excel配置的测试用例数据
      发送参数Json格式给Server,接收Server的返回数据
      进行数据比对校验,返回测试结果,将数据插入到Excel中
    2、Server端程序设计
      接受Client的参数,进行解析
      发送返回数据给client

三、实现方法
    1、选用Java脚本来驱动测试
    2、采用Excel表格管理测试数据,包括用例的管理、测试数据录入、测试结果显示等等,这个需要封装一个Excel的类。
    3、调用http接口采用java自带的的API
    4、测试需要的将参数转化成字符串
    5、通过预期结果和实际结果的对比,将实际结果和对比结果写入Excel用例中,这里封装了一个类
    6、首次执行测试采用人工检查输出的是否正确,一旦正确写入Excel的期望结果中,如果发现错误手工修正为预期文件。
四、Excel表格设计

五、代码结构

六、实现代码1、ExcelUtil.java
package client;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class ExcelUtil {
       
        //读取Excel中数据
        public static List<Param> read() throws Exception{
               HSSFWorkbook wb = new HSSFWorkbook();
               HSSFSheet s = wb.createSheet();
               HSSFRow row = s.createRow(0);
               HSSFCell cell = row.createCell((int)0,0);

               //------------从xls读出数据
               wb = new HSSFWorkbook(new FileInputStream("D:\\learn\\test.xls"));
               s = wb.getSheetAt(0);
               
               //获得EXCEL行数
               int rowNums=s.getLastRowNum();
               //获得Excell列数
               //int columnNum=r.getPhysicalNumberOfCells();
               
               List<Param> params=new ArrayList<Param>();
               for(int i=1;i<=rowNums;i++){
                       HSSFRow r = s.getRow(i);
                       cell=r.getCell(0);
                       Param param= new Param();
                       param.setNo(r.getCell(0).getStringCellValue());
                       param.setName(r.getCell(1).getStringCellValue());
                       param.setAge(r.getCell(2).getStringCellValue());
                       param.setSex(r.getCell(3).getStringCellValue());
                       param.setExpResu(r.getCell(4).getStringCellValue());
//                       System.out.println(cell.getRichStringCellValue());
                       params.add(param);
               }
               return params;

        }

        /**
          * 写入Excel,在任意坐标处写入数据。
          * String value:你要输入的内容
          * int x :行坐标,Excel从 0 算起
          * int y   :列坐标,Excel从 0 算起
          */
                public static void writeCell(String filePath,int x,int y,String value) {
                        try {
                                // 创建Excel的工作书册 Workbook,对应到一个excel文档
                                HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(filePath));
                                HSSFSheet sheet=wb.getSheetAt(0);
                                HSSFRow row=sheet.getRow(x);
                                HSSFCell cell=row.getCell((short) y);
                                cell.setCellValue(value);
                                FileOutputStream os;
                                os = new FileOutputStream(filePath);
                                wb.write(os);
                                os.close();
                        } catch (Exception e) {
                                e.printStackTrace();
                        }

                }
}
2、JsonsUtil.javapackage client;


import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
* 使用json-lib构造和解析Json数据
*/
public class JsonsUtil {

    /**将Bean转换成Map
   * 将Map转换Json数据
   */public static String BuildJson(Param param) throws JSONException {

      
           Map<String, String> map1 = new HashMap<String, String>();
         map1.put("no", param.getNo());
         map1.put("name", param.getName());
         map1.put("age", param.getAge());
         map1.put("sex", param.getSex());
//         map1.put("expResu", param.getExpResu());
           // JSON格式数据解析对象
      JSONObject jo = new JSONObject();
      // 将Map转换为JSONArray数据
      JSONArray ja = new JSONArray();
      ja.put(map1);
//      System.out.println("JSONArray对象数据格式:"+ja.toString());
      jo.put("map", ja);
//      System.out.println("最终构造的JSON数据格式:"+jo.toString());
      return jo.toString();

    }

    /**
   * 解析Json数据
   *
   */public static JSONArray ParseJson(String jsonString) throws JSONException,
            ParseException {

      JSONObject jo = new JSONObject(jsonString);
      JSONArray ja = jo.getJSONArray("map");
//      System.out.println(ja.getJSONObject(0).getString("name"));
      return ja;
    }
}
3、Param.java
package client;

public class Param {
       
        String no;//编号
        String name;//姓名
        String age;//年龄
        String sex;//性别
        String expResu;//期望结果
        String actResu;//实际结果
        String pass;//是否通过
        String desc;//描述
       
        public String getName() {
                return name;
        }

        public void setName(String name) {
                this.name = name;
        }

       
        public String getNo() {
                return no;
        }

        public void setNo(String no) {
                this.no = no;
        }

        public String getAge() {
                return age;
        }

        public void setAge(String age) {
                this.age = age;
        }

        public String getSex() {
                return sex;
        }

        public void setSex(String sex) {
                this.sex = sex;
        }

        public String getExpResu() {
                return expResu;
        }

        public void setExpResu(String expResu) {
                this.expResu = expResu;
        }

        public String getActResu() {
                return actResu;
        }

        public void setActResu(String actResu) {
                this.actResu = actResu;
        }

        public String getPass() {
                return pass;
        }

        public void setPass(String pass) {
                this.pass = pass;
        }

        public String getDesc() {
                return desc;
        }

        public void setDesc(String desc) {
                this.desc = desc;
        }
}

页: [1]
查看完整版本: http接口测试—自动化测试框架设计