testng连接MySQL_Selenium+TestNG实战-8-连接数据库方法去验证文章是否发布
原標題:Selenium+TestNG實戰-8-連接數據庫方法去驗證文章是否發布
記得之前群里,有人說舉例一下連接數據庫在Selenium自動化測試中的應用。本篇剛好來舉例一個,前面我們都是通過發布后文章的詳情頁的標題來判斷文章是否已經發布成功,這篇就通過數據查找來判斷。個人意見,在Selenium自動化中一般還是少用數據庫查詢去斷言成功還是失敗,效率是一回事,還有就是一般軟件系統都很大,數據庫中有很多表,開發都不一定弄得清楚這些表,何況測試人員更加困難去理清這些表。
請點擊此處輸入圖片描述
1. 前提條件
去MySQL官網下載一個mysql-connector-java的jar包。https://dev.mysql.com/downloads/file/?id=472651,解壓后拷貝jar到我們之前的eclipse項目并添加到項目的Library
請點擊此處輸入圖片描述
配置文件
請點擊此處輸入圖片描述
2. 實現過程
1) 寫一個連接數據庫的類,放在myframework包下。
package myframework;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class ConnectMySql {
private String DBUrl;
private String DBName;
private String DBUser;
private String DBPwd;
/**
* 讀取配置文件內容來獲取數據庫信息
*/
public void readDBConfigInfo() {
try {
Properties p = new Properties();
// 加載配置文件
InputStream ips = new FileInputStream(".\\TestConfig\\config.properties");
p.load(ips);
Logger.Output(LogType.LogTypeName.INFO, "Start to connect to mysql database.");
DBUrl = p.getProperty("Database_URL").trim();
Logger.Output(LogType.LogTypeName.INFO, "the database host is: "+ DBUrl);
DBName = p.getProperty("Database_Name").trim();
Logger.Output(LogType.LogTypeName.INFO, "The name of the database is: "+ DBName);
DBUser = p.getProperty("Database_Username").trim();
Logger.Output(LogType.LogTypeName.INFO, "the username of database is: "+ DBUser);
DBPwd = p.getProperty("Database_Password").trim();
ips.close();
} catch (IOException e) {
Logger.Output(LogType.LogTypeName.ERROR, "無法正常加載配置文件,請檢查文件路徑和相關設置");
}
}
public Connection getConnection() throws ClassNotFoundException {
String URL = "jdbc:mysql://"+DBUrl+":3306/"+DBName;
Connection conn = null;
try {
//1.加載驅動程序
Class.forName("com.mysql.jdbc.Driver");
//2.獲得數據庫的連接
conn = DriverManager.getConnection(URL, DBUser, DBPwd);
//3.通過數據庫的連接操作數據庫,實現增刪改查
} catch (SQLException e) {
Logger.Output(LogType.LogTypeName.ERROR, "SQL異常"+e.toString());
}
// 返回給調用者
return conn;
}
/**
* 關閉數據庫連接方法
* @param conn
*/
protected static void closeConnection(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
主要有鏈接數據庫和關閉數據庫兩個方法。
2)寫一個測試類來測試下
package testsuites.article;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.PageFactory;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import myframework.ConnectMySql;
import pageobjects.Login;
import pageobjects.MenuNavigation;
import pageobjects.article.writeacticle.NewArticle;
public class NewArticleTest {
public WebDriver driver;
Connection conn = null;
ConnectMySql cm = new ConnectMySql();
@BeforeClass
public void setUp() throws ClassNotFoundException {
try {
Login.initSetup();
} catch (IOException e) {
e.printStackTrace();
}
Login.loginValid();
driver = Login.driver;
try {
cm.readDBConfigInfo();
conn = cm.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
@AfterClass
public void tearDown() throws SQLException {
conn.close();
driver.quit();
}
@Test
public void testNewArticle() throws SQLException {
//初始化導航菜單頁面
MenuNavigation mn = PageFactory.initElements(driver, MenuNavigation.class);
mn.clickArticle();
mn.clickNewArticle();
//初始化寫文章頁面
NewArticle na = PageFactory.initElements(driver, NewArticle.class);
String title = "我的第一篇自動化發布的文章1";
String bodyContent = "第一行,這篇是演示如何通過自動化腳本來發布一篇文章123。";
na.publishArticle(title, bodyContent);
// 數據庫連接進行判斷
//創建statement類對象,用來執行SQL語句!!
Statement statement = conn.createStatement();
//要執行的SQL語句
String sql = "select * from wp_posts where post_title ='"+title+"'";
//ResultSet類,用來存放獲取的結果集!!
ResultSet rs = statement.executeQuery(sql);
while(rs.next()) {
String db_content = rs.getString("post_content");
// 斷言文章正文內容是否相同
Assert.assertEquals(bodyContent, db_content);
rs.close();
}
}
}
總的來說,當selenium自動化的斷言中,如果要引入數據庫查詢,還是比較麻煩,步驟也很啰嗦,除非一定要數據庫數據校驗,否則采用前端手動測試的斷言方法去斷言就可以。
相關代碼:
責任編輯:
總結
以上是生活随笔為你收集整理的testng连接MySQL_Selenium+TestNG实战-8-连接数据库方法去验证文章是否发布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python不同版本共存_多个pytho
- 下一篇: 一个域名解析到另一个域名_注册域名公司|