Dear All,
if you want to conncet your postgresql database and execute your query, you can follow below step.
-
Download postgresql from https://jdbc.postgresql.org/download.htmlb
-
Then place postgreSQL driver jar file on class path in Katalon :
Project → Setting → External Libraries → Click Add → Click Apply -
Create new custom keyword to create db connection. This (.groovy) class can be used for WebUI and Web Service testing. In this case class name is : postgressConn.groovy
-
Copy this code to postgressConn.groovy : import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObjectimport com.kms.katalon.core.annotation.Keyword
import com.kms.katalon.core.checkpoint.Checkpoint
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.model.FailureHandling
import com.kms.katalon.core.testcase.TestCase
import com.kms.katalon.core.testdata.TestData
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUIimport internal.GlobalVariable
import java.sql.ResultSet
import org.postgresql.Driver
import java.sql.DriverManager
import java.sql.SQLException
import java.sql.Statement
import org.postgresql.jdbc.PgConnection
import org.postgresql.jdbc.PgResultSet
import org.postgresql.jdbc.PgStatement
import java.sql.*public class postgressConn {
private static PgConnection connection = null;
@Keyworddef connectDB(String url, String dbname, String port, String username, String password) { //Load driver class for your specific database type String conn = "jdbc:postgresql://" + 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 resultSet = stm.executeQuery(queryString) ResultSetMetaData metadata = resultSet.getMetaData() int columnCount = metadata.getColumnCount() List<List<String>> rowList = new LinkedList<List<String>>() while (resultSet.next()) { List<String> row = new LinkedList<>() for(int i = 1; i <=columnCount; i++) { Object value = resultSet.getObject(i) row.add(value) } rowList.add(row) } for(List<String> row: rowList) { for(String data: row) { System.out.print(data + " ") } System.out.println() } return rowList } //Closing the connection @Keyword def closeDatabaseConnection() { if (connection != null && !connection.isClosed()) { connection.close() } connection = null }
}
-
Then call custom keyword in your test script : import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObjectimport java.sql.ResultSetMetaData
import org.postgresql.jdbc.PgResultSet
import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.model.FailureHandling as FailureHandling
import com.kms.katalon.core.testcase.TestCase as TestCase
import com.kms.katalon.core.testdata.TestData as TestData
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import internal.GlobalVariable as GlobalVariableresponseCode = WS.sendRequest(findTestObject(‘DDSI-13 Search/DDSI-13_UA01_TC001’))
String url=‘localhost’
String dbname=‘mydatabase’
String port=‘5432’
String username=‘password’
String password=‘password’
CustomKeywords.‘com.test.postgressConn.connectDB’(url, dbname, port, username, password)String selectData=‘SELECT * FROM user limit 1’
List<List> rowList = CustomKeywords.‘com.test.postgressConn.executeQuery’(selectData)
String code=rowList.get(0).get(0)
String name=rowList.get(0).get(7)
String value=rowList.get(0).get(8)WS.verifyResponseStatusCode(responseCode, 200)
WS.verifyElementPropertyValue(responseCode, ‘data.result[0].code’, code)
WS.verifyElementPropertyValue(responseCode, ‘data.result[0].name’, name)
WS.verifyElementPropertyValue(responseCode, ‘data.result[0].value’, value)
CustomKeywords.‘com.test.postgressConn.closeDatabaseConnection’()
-
Run your test case