目前还沉浸在java自动化测试中不能自拔!
自动化过程中免不了要从数据库取值与期望值比较,目前我项目刚开始就需要用到了。
下面我把操作过程写下来:
我的项目框架是java+maven+testNG,所以首先要在pom.xml中添加mysql-connector-java的依赖,如下所示:
<!-- 加入mysql支持 --> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency>
然后写一个链接mysql的类,如下所示
/** * @author Helen * @date 2018年4月12日 */ package common; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; /** * 描述:mysql数据库链接处理 */ public class mySQL { private static final String url = "jdbc:mysql://*****/**";/*jdbc:mysql://数据库IP/数据库名*/ private static final String user = "**";//数据库用户名 private static final String password = "**";//对应的用户密码 private Connection conn = null; private PreparedStatement pst = null; private ResultSet resultSet = null; public mySQL() { try { conn = DriverManager.getConnection(url, user, password); } catch (Exception e) { System.out.println("数据库连接失败!"); e.printStackTrace(); } } /* 执行SQL语句:查询并返回结果, 这是单结果返回,我们测试的时候就是根据条件查询,然后返回一个结果与期望结果比较即可,所以单结果足已*/ public String getData(String sql, String targetName) { String result = null; try { pst = conn.prepareStatement(sql); resultSet = pst.executeQuery(); while (resultSet.next()) { result = resultSet.getString(targetName); } this.close(); } catch (Exception e) { System.out.println("执行查询语句失败"); e.printStackTrace(); } return result; } /* 关闭链接 */ private void close() { try { this.conn.close(); this.pst.close(); } catch (Exception e) { System.out.println("关闭数据库连接失败!"); e.printStackTrace(); } } }
下面在test调用mySQL执行查询操作,如下所示:
package myTest.mytest; import static org.testng.Assert.assertEquals; import org.testng.annotations.Test; import common.mySQL; public class mysqlTest { @Test public void getDataFromMysql() { mySQL mySQL = new mySQL(); String result = mySQL.getData("SELECT `name` from course where id=1","name");//查询语句 assertEquals(result, "PS提高班班"); } }
……