51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2002|回复: 0

[原创] http接口测试—自动化测试框架设计

[复制链接]

该用户从未签到

发表于 2019-1-22 16:07:25 | 显示全部楼层 |阅读模式

一、测试需求描述
    对服务后台一系列的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

  1. package client;

  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.util.ArrayList;
  6. import java.util.List;

  7. import org.apache.poi.hssf.usermodel.HSSFCell;
  8. import org.apache.poi.hssf.usermodel.HSSFRichTextString;
  9. import org.apache.poi.hssf.usermodel.HSSFRow;
  10. import org.apache.poi.hssf.usermodel.HSSFSheet;
  11. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  12. import org.apache.poi.poifs.filesystem.POIFSFileSystem;

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

  21.                  //------------从xls读出数据
  22.                  wb = new HSSFWorkbook(new FileInputStream("D:\\learn\\test.xls"));
  23.                  s = wb.getSheetAt(0);
  24.                  
  25.                  //获得EXCEL行数
  26.                  int rowNums=s.getLastRowNum();
  27.                  //获得Excell列数
  28.                  //int columnNum=r.getPhysicalNumberOfCells();
  29.                  
  30.                  List<Param> params=new ArrayList<Param>();
  31.                  for(int i=1;i<=rowNums;i++){
  32.                          HSSFRow r = s.getRow(i);
  33.                          cell=r.getCell(0);
  34.                          Param param= new Param();
  35.                          param.setNo(r.getCell(0).getStringCellValue());
  36.                          param.setName(r.getCell(1).getStringCellValue());
  37.                          param.setAge(r.getCell(2).getStringCellValue());
  38.                          param.setSex(r.getCell(3).getStringCellValue());
  39.                          param.setExpResu(r.getCell(4).getStringCellValue());
  40. //                         System.out.println(cell.getRichStringCellValue());
  41.                          params.add(param);
  42.                  }
  43.                  return params;

  44.         }

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

  66.                 }
  67. }
复制代码

2、JsonsUtil.java
  1. package client;


  2. import java.text.ParseException;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;

  7. import org.json.JSONArray;
  8. import org.json.JSONException;
  9. import org.json.JSONObject;

  10. /**
  11. * 使用json-lib构造和解析Json数据
  12. */
  13. public class JsonsUtil {

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

  17.         
  18.              Map<String, String> map1 = new HashMap<String, String>();
  19.          map1.put("no", param.getNo());
  20.          map1.put("name", param.getName());
  21.          map1.put("age", param.getAge());
  22.          map1.put("sex", param.getSex());
  23. //         map1.put("expResu", param.getExpResu());
  24.              // JSON格式数据解析对象
  25.         JSONObject jo = new JSONObject();
  26.         // 将Map转换为JSONArray数据
  27.         JSONArray ja = new JSONArray();
  28.         ja.put(map1);
  29. //        System.out.println("JSONArray对象数据格式:"+ja.toString());
  30.         jo.put("map", ja);
  31. //        System.out.println("最终构造的JSON数据格式:"+jo.toString());
  32.         return jo.toString();

  33.     }

  34.     /**
  35.      * 解析Json数据
  36.      *
  37.      */public static JSONArray ParseJson(String jsonString) throws JSONException,
  38.             ParseException {

  39.         JSONObject jo = new JSONObject(jsonString);
  40.         JSONArray ja = jo.getJSONArray("map");
  41. //        System.out.println(ja.getJSONObject(0).getString("name"));
  42.         return ja;
  43.     }
  44. }
复制代码

3、Param.java

  1. package client;

  2. public class Param {
  3.        
  4.         String no;//编号
  5.         String name;//姓名
  6.         String age;//年龄
  7.         String sex;//性别
  8.         String expResu;//期望结果
  9.         String actResu;//实际结果
  10.         String pass;//是否通过
  11.         String desc;//描述
  12.        
  13.         public String getName() {
  14.                 return name;
  15.         }

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

  19.        
  20.         public String getNo() {
  21.                 return no;
  22.         }

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

  26.         public String getAge() {
  27.                 return age;
  28.         }

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

  32.         public String getSex() {
  33.                 return sex;
  34.         }

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

  38.         public String getExpResu() {
  39.                 return expResu;
  40.         }

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

  44.         public String getActResu() {
  45.                 return actResu;
  46.         }

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

  50.         public String getPass() {
  51.                 return pass;
  52.         }

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

  56.         public String getDesc() {
  57.                 return desc;
  58.         }

  59.         public void setDesc(String desc) {
  60.                 this.desc = desc;
  61.         }
  62. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-3-29 04:12 , Processed in 0.063782 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表