zoukankan      html  css  js  c++  java
  • Java + maven + httpclient + testng + poi实现接口自动化

    一、maven中引入httpclient、testng、poi依赖包

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.lemon</groupId>
      <artifactId>interfaceDemo</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>interfaceDemo</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
          <version>4.5.2</version>
        </dependency>
        <dependency>
                <groupId>org.testng</groupId>
             <artifactId>testng</artifactId>
                 <version>6.8.8</version>
             <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.15</version>
        </dependency>
      </dependencies>
    </project>
    View Code

    二、准备测试数据

    三、poi读取Excel文件

    package com.lemon;
    
    import java.io.File;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.CellType;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.ss.usermodel.WorkbookFactory;
    
    public class ExcelUtil {
    
        public static Object[][] read(int startRow,int endRow,int startCell,int endCell){
            
            Object [][] datas = new Object [endRow-startRow+1][endCell-startCell+1];
            try {
                //获取WorkBook对象
                Workbook workbook = WorkbookFactory.create(new File("src/test/java/test.xlsx"));
                //获取sheet,0表示第一个
                Sheet sheet = workbook.getSheetAt(0);
                for(int i = startRow; i <= endRow;i++){
                    //取出每一行
                    Row row = sheet.getRow(i-1);
                    for (int j = startRow; j <= endCell;j++){
                        //取出每一列,先指定不会返回空对象,防止单元格为空时,报空指针异常
                        Cell cell = row.getCell(j-1,MissingCellPolicy.CREATE_NULL_AS_BLANK);
                        //把每列当字符串处理,并取出字符串的值
                        cell.setCellType(CellType.STRING);
                        String value = cell.getStringCellValue();
                        datas[i-startRow][j-startCell] = value;
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            } 
            return datas;
        }
        //测试
        public static void main(String[] args) throws Exception {
            Object[][] datas = read(2, 7, 2, 5);
            for(Object[] objects:datas){
                for(Object object:objects){
                    System.out.print("【"+object+"】");
                }
                System.out.println();
            }
        }
    }
    View Code

    四、编写接口自动化脚本

    package com.lemon;
    
    import java.io.UnsupportedEncodingException;
    import java.util.*;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.client.utils.URLEncodedUtils;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    import org.testng.Assert;
    import org.testng.annotations.DataProvider;
    import org.testng.annotations.Test;
    
    public class Demo {
        
        @Test(dataProvider="datas")
        public static void test(String url,String mobileCode,String userID,String type,String response) throws Exception {
            
            System.out.println("url:"+url+",mobileCode:"+mobileCode+",userID:"+userID+",type:"+type);
            if("post".equalsIgnoreCase(type)){
                String resp = doPost(url,mobileCode,userID);
                Assert.assertEquals(resp, response);
            }else {
                String resp = doGet(url,mobileCode,userID);
                Assert.assertEquals(resp, response);
            }
        }
        
        @DataProvider
        public static Object [][] datas(){
            
            /* Object [][] datas = {
            {"http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo","15578581","","post"},
            {"http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo","18381485","","get"},
            {"http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo","15084258","","post"}
            }; */
            
            Object[][] datas = ExcelUtil.read(2, 5, 2, 6);
            return datas;
        }
        
        /*
         * 实现get类型接口的调用
         */
        private static String doGet(String url,String mobileCode,String userID) throws Exception {
            //准备参数
            List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
            BasicNameValuePair mobile = new BasicNameValuePair("mobileCode",mobileCode);
            BasicNameValuePair ID = new BasicNameValuePair("userID",userID);
            params.add(mobile);
            params.add(ID);
            String paramsString = URLEncodedUtils.format(params, "UTF-8");
            url += "?" + paramsString;
            //创建get对象
            HttpGet get = new HttpGet(url);
            //创建Httpclient对象
            CloseableHttpClient httpclient = HttpClients.createDefault();
            //提交请求
            CloseableHttpResponse response = null;
            try {
                response = httpclient.execute(get);
                //获取状态码及响应数据
                int status = response.getStatusLine().getStatusCode();
                System.out.println("状态码为:" + status);
                String result = EntityUtils.toString(response.getEntity());
                System.out.println("响应数据为:" + result);
                //创建Pattern对象 
                Pattern pat = Pattern.compile(">(.*)</"); 
                //创建matcher对象 
                Matcher m = pat.matcher(result); 
                if (m.find( )){
                    return m.group(1);
                } 
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                if (response != null) {
                    response.close();
                }
                //相当于关闭浏览器
                httpclient.close();
            }
            return null; 
        }
        /*
         * 实现post类型接口的调用
         */
        private static String doPost(String url,String mobileCode,String userID) throws Exception {
            //创建post对象
            HttpPost post = new HttpPost(url);
            //准备参数
            List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
            BasicNameValuePair mobile = new BasicNameValuePair("mobileCode",mobileCode);
            BasicNameValuePair ID = new BasicNameValuePair("userID",userID);
            params.add(mobile);
            params.add(ID);
            //将参数封装到请求体当中
            post.setEntity(new UrlEncodedFormEntity(params));
            //创建httpclient对象发送请求
            CloseableHttpClient httpclient = HttpClients.createDefault();
            CloseableHttpResponse response = null;
            try {
                
                response = httpclient.execute(post);
                //获取状态码及响应数据
                int status = response.getStatusLine().getStatusCode();
                System.out.println("状态码为:" + status);
                String result = EntityUtils.toString(response.getEntity());
                System.out.println("响应数据为:" + result);
                // 创建 Pattern对象 
                Pattern pat = Pattern.compile(">(.*)</"); 
                // 现在创建 matcher对象 
                Matcher m = pat.matcher(result); 
                if (m.find( )) { 
                   return m.group(1);
                } 
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }finally {
                if (response != null) {
                    response.close();
                }
                //相当于关闭浏览器
                httpclient.close();
            }
            return null;
        }
    }
    View Code

     五、执行测试套

     六:执行结果

  • 相关阅读:
    毕业进度10
    毕业进度9
    毕业进度8
    毕业设计7
    毕业设计6
    java算法每日一练2021/1/26
    java算法每日一练2021/1/23
    java算法每日一练2021/1/21
    java算法每日一练2021/1/20
    java算法每日一练2021-01-18
  • 原文地址:https://www.cnblogs.com/zhufeng123/p/14054201.html
Copyright © 2011-2022 走看看