目前還沉浸在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提高班班"); } }
……