博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java结合testng,利用mysql数据库做数据源的数据驱动实例
阅读量:5945 次
发布时间:2019-06-19

本文共 2862 字,大约阅读时间需要 9 分钟。

上一篇我们介绍用如何用yaml结合testng做数据驱动,就又想来个数据库的参数化

备注:@DataProvider的返回值类型只能是Object[][]与Iterator<Object>[]

思路:

解析sql查询返回结果,然后把解析出来的list转换成Object[][]类型的数据,且结合在@DataProvider中。

然后把解析出来的list转换成Object[][]类型的数据,且结合在@DataProvider中。

 

DbDataHeleper.java

import org.testng.annotations.DataProvider;import java.sql.*;import java.util.*;/** * 数据库操作工具 * * @author longrong.lang */public class DbDataHeleper {    static Connection conn = null;    public static String driverClassName = "com.mysql.jdbc.Driver";    public static String url = "jdbc:mysql://127.0.0.1:3306/demo";    public static String username = "root";    public static String password = "root";    /**     * 执行sql     *     * @param jdbcUrl 数据库配置连接     * @param sql     sql语句     * @return     */    public static List
> getDataList(String jdbcUrl, String sql) { List
> paramList = new ArrayList
>(); Map
param = new HashMap<>(); Statement stmt = null; try { // 注册 JDBC 驱动 Class.forName(driverClassName); // 打开链接 conn = DriverManager.getConnection(jdbcUrl, username, password); // 执行查询 stmt = conn.createStatement(); ResultSet rs = null; rs = stmt.executeQuery(sql); String columns[] = {"username", "passWord", "remark"}; // 展开结果集数据库 while (rs.next()) { Map
map = new LinkedHashMap
(); for (int i = 0; i < columns.length; i++) { String cellData = rs.getString(columns[i]); map.put(columns[i], cellData); } paramList.add(map); } // 完成后关闭 rs.close(); stmt.close(); conn.close(); } catch (SQLException se) { // 处理 JDBC 错误 System.out.println("处理 JDBC 错误!"); } catch (Exception e) { // 处理 Class.forName 错误 System.out.println("处理 Class.forName 错误"); } finally { // 关闭资源 try { if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException se) { se.printStackTrace(); } } return paramList; } @DataProvider public Object[][] dbDataMethod() { String sql = "SELECT * FROM `account`;"; List
> result = getDataList(url, sql); Object[][] files = new Object[result.size()][]; for (int i = 0; i < result.size(); i++) { files[i] = new Object[]{result.get(i)}; } return files; }}

再通过测试文件来测试一下:

TestDbData.java

import org.testng.annotations.Test;import java.util.Map;public class TestDbData extends DbDataHeleper {    @Test(dataProvider = "dbDataMethod")    public void testmethod1(Map
param) { System.out.println(param.get("username") + "\t" + param.get("passWord") + "\t" + param.get("remark")); }}

运行效果:

[TestNG] Running:  C:\Users\Administrator\.IntelliJIdea2018.2\system\temp-testng-customsuite.xmlrongrong    123456    3xiaoqiang    123654    4gates    112121    1gates    112121    2===============================================Default SuiteTotal tests run: 4, Failures: 0, Skips: 0===============================================Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8Process finished with exit code 0

 

转载地址:http://sdbxx.baihongyu.com/

你可能感兴趣的文章
linux 笔记本的温度提示
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
广平县北方计算机第一届PS设计大赛
查看>>
深入理解Java的接口和抽象类
查看>>
java与xml
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
基于事件驱动的DDD领域驱动设计框架分享(附源代码)
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
crontab执行shell脚本日志中出现乱码
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>