java结合testng,利用mysql数据库做数据源的数据驱动实例
上一篇我们介绍用如何用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<Map<String, String>> getDataList(String jdbcUrl, String sql) {
- List<Map<String, String>> paramList = new ArrayList<Map<String, String>>();
- Map<String, String> 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<String, String> map = new LinkedHashMap<String, String>();
- 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<Map<String, String>> 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.xml
- rongrong 123456 3
- xiaoqiang 123654 4
- gates 112121 1
- gates 112121 2
- ===============================================
- Default Suite
- Total tests run: 4, Failures: 0, Skips: 0
- ===============================================
- Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
- Process finished with exit code 0
java结合testng,利用mysql数据库做数据源的数据驱动实例的更多相关文章
- java结合testng,利用excel做数据源的数据驱动实例
数据驱动部分,是自动化测试常用部分,也是参数化设计的重要环节,前面分享了,mysql.yaml做数据源,那么再来分享下excel做数据驱动 思路: 先用POI读取excel.解析读取数据,返回list ...
- java结合testng,利用yaml做数据源的数据驱动实例
testng的功能很强大,利用@DataProvider可以做数据驱动,数据源文件可以是EXCEL,XML,YAML,甚至可以是TXT文本.在这以yaml为例: 备注:@DataProvider的返回 ...
- java结合testng,利用txt做数据源的数据驱动实例
import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.Buffe ...
- Java通过JDBC 进行MySQL数据库操作
转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- java用JDBC连接MySQL数据库的详细知识点
想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...
- 【mysql】备份篇2:使用java程序定期备份mysql数据库
承接备份篇1, 在备份篇1中,使用dat文件加+系统计划任务程序完成mysql定期备份任务 在这一篇,备份使用java程序定期备份mysql数据库. 下面代码和程序思想给出: package com. ...
- Java Web工程连接MySQL数据库及Tomcat服务器页面中文乱码
Java Web工程连接MySQL数据库 一. 准备工作 1.下载连接MySQL数据库的JDBC (可以去官网下,也可以去百度云找) 2.将下载的jar文件复制到Tomcat的lib目录下 3.新建一 ...
- ava基础MySQL存储过程 Java基础 JDBC连接MySQL数据库
1.MySQL存储过程 1.1.什么是存储过程 带有逻辑的sql语句:带有流程控制语句(if while)等等 的sql语句 1.2.存储过程的特点 1)执行效率非常快,存储过程是数据库的服 ...
随机推荐
- 031、none和host网络的适用场景(2019-02-18 周一)
参考https://www.cnblogs.com/CloudMan6/p/7053617.html 本节开始,会学习docker的几种原生网络,以及如何创建自定义网络.然后探究容器之间如何通信, ...
- gcc 编译 汇编 链接
要想研究使用 gcc, gcc-multilib 这个包是一定要安装的, 它允许通过 -m32 和 -m64 选项来选择生成 32 位或者 64 的 ELF 文件. 我们知道程序的默认起点是 _sta ...
- jQuery漏洞
1.使用jQuery.append().jQuery.html()方法时,如果其中内容包含<script>脚本而没有经过任何处理的话,会执行它. 2.版本低于1.7的jQuery过滤用户输 ...
- 【python小练】0010
第 0010 题:使用 Python 生成类似于下图中的字母验证码图片 思路: 1. 随机生成字符串 2. 创建画布往上头写字符串 3. 干扰画面 code: # codeing: utf-8 fro ...
- 唯一约束(UNIQUE_KEY)
唯一约束可以保证记录的唯一性 唯一约束的字段可以为空值(NULL) 每张数据表可以存在多个唯一约束(主键只有一个) mysql> CREATE TABLE tb7( -> id SMALL ...
- ubuntu安装matplotlib一些坑
ubuntu16.04,python2.7 安装matplotlib, 1.在root权限下执行命令 pip install matplotlib==1.5.1 这里有个困扰我一个星期的问题,系统都被 ...
- mac 下node,yarn安装及版本切换
node安装 https://nodejs.org/en/download/ 到官网下载指定版本 安装node的管理工具 sudo npm install -g n //安装n sudo n 8.9. ...
- steps/train_lda_mllt.sh
LDA+MLLT指的是在计算MFCC后对特征进行的变换:首先对特征进行扩帧,使用LDA降维(默认降低到40),然后经过多次迭代轮数估计一个对角变换(又称为MLLT或CTC) .详见 http://ka ...
- vue项目使用element-ui的Tooltip 无效
我之前要使用vue开发一个项目,使用到了element-UI的Tooltip 组件 <el-tooltip class="item" effect="dark&qu ...
- 使用C++ stringstream来进行数据类型转换
参考链接: http://blog.csdn.net/tao_627/article/details/39000779