Chào các bạn đã đến với chủ đề tiếp theo của mình. Hôm nay, mình sẽ tiếp tục hướng dẫn các bạn cách viết custom keyword để connect với database và truy vấn dữ liệu trên Katalon Studio. Để thực hiện bài này, các bạn hãy setup sẵn database và config jdbc driver. Các bạn có thể xem lại bài trước để biết cách config nhé.
1. Cách kết nối vào cơ sở dữ liệu (Database)
- Đầu tiên, chúng ta vào thư mục “Keywords” tạo mới một package đặt tên là “database”. Từ package này chúng ta tạo mới một “Keyword” đặt tên là “ConnectDB”.
- Tiếp theo, ta cần import các thư viện cần thiết cho việc kết nối đến database:
import java.sql.Connection
import java.sql.DriverManager
import java.sql.Statement
import java.sql.ResultSet
import java.sql.SQLException
- Sau khi import các thư viện trên thì chúng ta có thể viết các method để kết nối đến Database và truy vấn dữ liệu:
package com.database
import java.sql.DriverManager
import java.sql.ResultSet
import java.sql.Statement
import com.kms.katalon.core.annotation.Keyword
import com.mysql.jdbc.Connection
public class DemoMySql {
private static Connection connection = null;
/**
* Open and return a connection to database
* @param dataFile absolute file path
* @return an instance of java.sql.Connection
*/
@Keyword
def connectDB(String url, String dbname, String port, String username, String password){
//Load driver class for your specific database type
String conn = "jdbc:mysql://" + url + ":" + port + "/" + dbname
if(connection != null && !connection.isClosed()){
connection.close()
}
connection = DriverManager.getConnection(conn, username, password)
return connection
}
/**
* execute a SQL query on database
* @param queryString SQL query string
* @return a reference to returned data collection, an instance of java.sql.ResultSet
*/
@Keyword
def executeQuery(String queryString) {
Statement stm = connection.createStatement()
ResultSet rs = stm.executeQuery(queryString)
return rs
}
//Closing the connection
@Keyword
def closeDatabaseConnection() {
if(connection != null && !connection.isClosed()){
connection.close()
}
connection = null
}
/**
* Execute non-query (usually INSERT/UPDATE/DELETE/COUNT/SUM...) on database
* @param queryString a SQL statement
* @return single value result of SQL statement
*/
@Keyword
def execute(String queryString) {
Statement stm = connection.createStatement()
boolean result = stm.execute(queryString)
return result
}
}
- Vào thư mục “Test Cases” tạo mới 1 testcase, tương tự như hình dưới, mình đặt tên là Invalidate trong mục chứa test case của phần Search:
- Mở test case lên, bật chế độ script, thực hiện câu lệnh mở kết nối đến cơ sở dữ liệu:
CustomKeywords.'database.ConnectDB.connectDB'('localhost', 'project1', '3306', 'root', '')
- Do cơ sở dữ liệu của mình nằm trên local, nên url ở đây sẽ là localhost, tên database mình đặt là “project1”, cổng 3306 của cơ sở dữ liệu MySQL, username ở đây là “root” và password sẽ là rỗng. Nếu các bạn dùng cơ sở dữ liệu khác như SQL SERVER hay Oracle thì cách kết nối tương tự, mà chúng ta sẽ thay số cổng là 1433 và 1521 tương ứng với cổng của SQL SERVER và Oracle, username và password là khi cài đặt các bạn đặt.
2. Cách thực hiện truy vấn và lấy kết quả từ truy vấn (query)
- Sau khi đã kết nối đến cơ sở dữ liệu thành công. Chúng ta có thể thực hiện các truy vấn.
- Mình sẽ lấy ví dụ về phần “Tìm kiếm” trên một trang web bán điện thoại di động, với test case là nhập tên sản phẩm có tồn tại trong database:
- Trong kiểm thử thủ công, thì chúng ta sẽ thực hiện theo các bước sau:
- Bước 1: Nhập tên sản phẩm đó vào ô tìm kiếm ví dụ: Samsung galaxy s9
- Bước 2: Nhấn vào button “Tìm kiếm”
- Bước 3: Kiểm tra kết quả trả về có đúng hay không
- -> Tại bước 3, cần truy vấn vào database để xem kết quả hiện lên màn hình có đúng hay không?
- Đối với kiểm thử tự động, chúng ta cũng sẽ thực hiện như vậy:
String txtSearch = 'Samsung galaxy s9'
WebUI.openBrowser(null)
WebUI.maximizeWindow()
WebUI.navigateToUrl('http://127.0.0.1:8000')
WebUI.click(findTestObject('Object Repository/Search/Page_Home/input_ng k_search'))
//gán text vào ô search
WebUI.setText(findTestObject('Object Repository/Search/Page_Home/input_ng k_search'), txtSearch)
//nhấn button search
WebUI.click(findTestObject('Object Repository/Search/Page_Home/icon_search'))
WebUI.scrollToPosition(600, 600)
WebUI.delay(5)
//truy vấn vào database để so sánh với kết quả hiện thị trên màn hình
String query = "select count(*) as numberOfProducts from products where name like '%"+txtSearch.trim()+"%'";
ResultSet result = CustomKeywords.'database.ConnectDB.executeQuery'(query)
//sử dụng ResultSet để lấy kết quả trả về
result.first()
int countProducts= result.getInt(1)
WebDriver driver = DriverFactory.getWebDriver()
//so sánh kết quả giữa Database và trên màn hình
if(countProducts==driver.findElements(By.xpath("//*[@class='product-grid product-loop']")).size()){
println ("Passed!")
}
else{
println ("Failed!")
}
WebUI.closeBrowser()
3. Kết
Như vậy mình đã giới thiệu xong cách truy vấn dữ liệu database trên Katalon. Cảm ơn các bạn đã theo dõi bài viết của mình. Chúc các bạn thành công. Hẹn gặp lại các bạn ở những chủ đề tiếp theo. Bái bai.
Nguồn:
https://viblo.asia/p/kiem-thu-co-so-du-lieu-trong-katalon-studio-GrLZDQpBlk0