建设网站深圳,做互联网项目怎么推广,成都武侯区建设局门户网站,北京seo课程一、测试需求描述 对服务后台一系列的http接口功能测试。 输入#xff1a;根据接口描述构造不同的参数输入值#xff08;Json格式#xff09; 输出#xff1a;字符串#xff08;传入的方式传入的字符串#xff09; http://localhost:8090/lctest/TestServer 二、程序设计…一、测试需求描述 对服务后台一系列的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 ListParam 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 rowNumss.getLastRowNum();//获得Excell列数//int columnNumr.getPhysicalNumberOfCells();ListParam paramsnew ArrayListParam();for(int i1;irowNums;i){HSSFRow r s.getRow(i);cellr.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 sheetwb.getSheetAt(0);HSSFRow rowsheet.getRow(x);HSSFCell cellrow.getCell((short) y);cell.setCellValue(value);FileOutputStream os;os new FileOutputStream(filePath);wb.write(os);os.close();} catch (Exception e) {e.printStackTrace();}}
} 2、JsonsUtil.java package 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 {MapString, String map1 new HashMapString, 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;}
} 4、CompareRes.java package client;public class CompareRes {int actResuNo5;//测试结果在第五例int passNo6;//对比结果在第六列public void compare(String filePath,Param param,String actResu){ExcelUtil.writeCell(filePath,Integer.parseInt(param.getNo()),actResuNo,actResu);if(param.getExpResu().trim().equals(actResu)){ExcelUtil.writeCell(filePath,Integer.parseInt(param.getNo()),passNo,Y);}else{ExcelUtil.writeCell(filePath,Integer.parseInt(param.getNo()),passNo,N);}}
} 5、TestClient .java
package client;import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;public class TestClient {public static void main(String[]agrs){TestClient anew TestClient();try {a.client();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void client() throws Exception{ListParam params ExcelUtil.read();for(Param pa:params){try {// 接报文的地址String filePathD:\\learn\\test.xls;String param new JsonsUtil().BuildJson(pa);URL serverUrl new URL(http://localhost:8090/lctest/TestServer);URLConnection uct serverUrl.openConnection();HttpURLConnection hutc(HttpURLConnection)uct; // 设置报文参数hutc.setRequestMethod(POST);// 设置是否向httpUrlConnection输出因为这个是post请求参数要放在 http正文内因此需要设为true, 默认情况下是false; hutc.setDoOutput(true);// 设置是否从httpUrlConnection读入默认情况下是truehutc.setDoInput(true);
// hutc.setAllowUserInteraction(true);// 开启流写入数据dataOutputStream outhutc.getOutputStream();out.write(param.getBytes(UTF-8));out.flush();out.close();// 获取返回的数据 StringBuffer buffernew StringBuffer();BufferedReader reader null;InputStream inshutc.getInputStream();reader new BufferedReader(new InputStreamReader(ins,UTF-8));String sgreader.readLine();if (sg! null){buffer.append(sg);}System.out.println(接收返回值: buffer);new CompareRes().compare(filePath, pa, buffer.toString());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
}
6、TestServer
public class TestServer extends HttpServlet {private static final long serialVersionUID 1L;private static JSONArray ja;/*** see HttpServlet#HttpServlet()*/public TestServer() {super();// TODO Auto-generated constructor stub}/*** see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubtry {this.excute(request, response);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubtry {this.excute(request, response);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void excute(HttpServletRequest request,HttpServletResponse response) throws Exception{request.setCharacterEncoding(utf-8);response.setCharacterEncoding(UTF-8);response.setContentType(text/xml);String methodrequest.getMethod();String urlrequest.getRequestURI();String param;// 获取收到的报文BufferedReader reader request.getReader();String line ;line reader.readLine();janew JsonsUtil().ParseJson(line); StringBuffer resultBuffernew StringBuffer();resultBuffer.append(访问方式method访问成功);resultBuffer.append(接收到的数据line);PrintWriter out response.getWriter();out.println(resultBuffer.toString());out.flush();out.close();}
}
7、web.xml
?xml version1.0 encodingUTF-8?
web-app xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlnshttp://java.sun.com/xml/ns/javaee xsi:schemaLocationhttp://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd idWebApp_ID version3.0servletservlet-nameTestServer/servlet-nameservlet-classcom.servlet.TestServer/servlet-class/servletservlet-mappingservlet-nameTestServer/servlet-nameurl-pattern/lctest/TestServer/url-pattern/servlet-mapping
/web-app Python接口自动化测试零基础入门到精通2023最新版