1. 程式人生 > >dataProvider數據獲取存儲數據庫

dataProvider數據獲取存儲數據庫

shadow alt druid ide watermark 獲取 request des resultset

實體報告類
CREATE TABLE `testngreport_two` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘編號‘,
  `uuid` varchar(100) NOT NULL COMMENT ‘編號‘,
  `passed` varchar(255) DEFAULT NULL COMMENT ‘通過‘,
  `failed` varchar(255) DEFAULT NULL COMMENT ‘失敗‘,
  `skipped` varchar(255) DEFAULT NULL COMMENT ‘跳過‘,
  `duration` varchar(255) DEFAULT NULL COMMENT ‘使用時間‘,
  `test_user` varchar(255) DEFAULT NULL COMMENT ‘測試用戶人員‘,
  `systemInfo` varchar(255) DEFAULT NULL COMMENT ‘系統信息‘,
  `test_time` datetime DEFAULT NULL COMMENT ‘測試時間‘,
  `description` varchar(255) DEFAULT NULL COMMENT ‘用例描述‘,
  `starttime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT ‘開始時間‘,
  `endtime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT ‘結束時間‘,
  `Interfacename` varchar(255) DEFAULT NULL COMMENT ‘接口名字‘,
  `type` varchar(255) DEFAULT NULL COMMENT ‘類型‘,
  `failuredetails` varchar(500) DEFAULT NULL COMMENT ‘失敗詳情‘,
  `testPackageNamePath` varchar(255) DEFAULT NULL COMMENT ‘包名方類名方法名‘,
  `requestUrl` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT ‘請求url‘,
  `requestBody` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT ‘請求body‘,
  `requestParameter` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT ‘請求參數‘,
  `responseBody` longtext CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT ‘響應信息‘,
  PRIMARY KEY (`id`,`uuid`)
) ENGINE=InnoDB AUTO_INCREMENT=380 DEFAULT CHARSET=utf8;

實體請求類


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.extern.log4j.Log4j;

import java.util.Map;

/**
 * @author liwen406
 * @Title: MyHttpEntity
 * @Description:  請求實體類
 * @date 2019/3/24 / 17:54
 */
@Log4j
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class MyHttpEntity  implements Entity  {
    String url;
    String ip;
    String body;
    String info;
    Map<String, ?> parameter;
    Map<String, String> header;
}

數據配置鏈接


import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * @author liwen406
 * @Title: JDBCUtils
 * @Description: 1. 聲明靜態數據源成員變量
 * 2. 創建連接池對象
 * 3. 定義公有的得到數據源的方法
 * 4. 定義得到連接對象的方法
 * 5. 定義關閉資源的方法
 * @date 2019/3/20 / 13:34
 */

public class JDBCUtils {
    /**1.   聲明靜態數據源成員變量*/
    private static DataSource ds;

    /**2. 創建連接池對象*/
    static {
        /**加載配置文件中的數據*/
        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("application.yml");
        Properties pp = new Properties();
        try {
            pp.load(is);
            /** 創建連接池,使用配置文件中的參數*/
            ds = DruidDataSourceFactory.createDataSource(pp);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 3. 定義公有的得到數據源的方法
     * @return
     */
    public static DataSource getDataSource() {
        return ds;
    }

    /**
     * 4. 定義得到連接對象的方法
     * @return
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }

    /**
     * 5.定義關閉資源的方法
      * @param conn
     * @param stmt
     * @param rs
     */
    public static void close(Connection conn, Statement stmt, ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
            }
        }

        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
            }
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
            }
        }
    }

    /***
     *  6.重載關閉方法
     * @param conn
     * @param stmt
     */
    public static void close(Connection conn, Statement stmt) {
        close(conn, stmt, null);
    }
}

數據庫sql寫法

  private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

 public int savereportTwo1(TestngReport testngReport) {
        testngReport.setUuid(Tool.getUUID());
        testngReport.setTesttime(new Date());
        int id = 0;
        try {
            //1.定義sql
            String sql = "INSERT INTO testngreport_two(uuid,duration,test_user," +
                    "test_time,starttime,endtime," +
                    "requestUrl,requestBody,requestParameter,responseBody) VALUES (?,?,?,?,?,?,?,?,?,?)";
            //2.執行sql
            id = template.update(sql, testngReport.getUuid(),
                    testngReport.getDuration(),
                    testngReport.getTestuser(),
                    testngReport.getTesttime(),
                    testngReport.getStarttime(),
                    testngReport.getEndtime(),
                    testngReport.getRequestUrl(),
                    testngReport.getRequestBody(),
                    testngReport.getRequestParameter(),
                    testngReport.getResponseBody()
            );
            log.info("插入成功:" + id);
        } catch (DataAccessException e) {
            log.info("插入失敗");
            e.printStackTrace();
        }
        return id;
    }

test類

@DataProvider
    public Object[][] getparam() {
        int k = 0;
        String[] param = {"2367952", "2367141", "2366552", "2364334"};
        Object[][] result = new Object[param.length][];
        for (int i = 0; i < param.length; i++) {
            MyHttpEntity httpEntity = new MyHttpEntity();
            httpEntity.setUrl("https://blog.51cto.com/357712148/" + param[i]);
            result[k++] = new Object[]{httpEntity};
        }
        return result;
    }

    @Test(dataProvider = "getparam", dataProviderClass = Dataprovidert.class)
    public void mydatep(MyHttpEntity httpEntity) {
        TestngReportRaoimpl reportRaoimpl = new TestngReportRaoimpl();
        Long starttime = System.currentTimeMillis();
        HttpResponse response = HttpRequest.get(httpEntity.url).execute();
        Assert.assertTrue(response.body().contains("success"));

        Long endttime = System.currentTimeMillis();
        TestngReport testngReport = new TestngReport();
        testngReport.setRequestUrl(httpEntity.getUrl());
        testngReport.setStarttime(starttime + "");
        testngReport.setEndtime(endttime + "");
        testngReport.setTestuser("liwen");
        testngReport.setRequestParameter(httpEntity.getParameter() + "");
        testngReport.setResponseBody(response.body());
        testngReport.setRequestBody(httpEntity.getBody());
        testngReport.setDuration((endttime - starttime) + "毫秒");
        reportRaoimpl.savereportTwo1(testngReport);
                }

結果:

技術分享圖片

dataProvider數據獲取存儲數據庫