Katalon Studio - Database record count verification


#1

Hi All,

I am very new to katalon studio. Using the documentation provided, I have created a custom keyword which connects to my MySQL database and execute a query.I have called this custom keyword inside my main script. But I am clueless on implementing below scenario.

Issue: I have a table named “users” where I have 100 records. When I add a new user from UI the count should be increased by 1 in the users table.So in my script , I have added code to add new record from UI and to connect with table and execute query to get record count , but I need to verify this query result with old records count from database(something like verify operation or assert).How to achieve this comparison part?

Can someone help me with this?


#2

Hello,

this is a pseudo-code for your problem. It should work like this:

int countBefore = mysqlQueryExecutor('select count(*) from users')

addUser()

int countAfter = mysqlQueryExecutor('select count(*) from users')

assert countBefore + 1 == countAfter

#3

Thanks a lot for your solution.I will try out your solution and provide update


#4

@Marek_Melocik : When i use the solution provided and used in my script, getting the below error.

Script : int userscountbefore = CustomKeywords.‘com.sampleproj.DBConnection.dblogin.executeQuery’(‘Select count(*) from users’)

**Error message **
**2019-**09-10 14:29:42.815 ERROR c.k.katalon.core.main.TestCaseExecutor - :x: Test Cases/Functional/users/Create a new user FAILED.
Reason:
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object ‘SQLServerResultSet:1’ with class ‘com.microsoft.sqlserver.jdbc.SQLServerResultSet’ to class ‘int’
at Create a new Category.run(Create a new Category:67)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:337)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:328)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:307)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:299)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:233)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)
at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
at TempTestCase1568105958194.run(TempTestCase1568105958194.groovy:21)

Alternate script tried :
def userscountbefore = CustomKeywords.‘com.sampleproj.DBConnection.dblogin.executeQuery’(‘Select count(*) from users’)

If i use above statement, i am not getting above error message.But results are not stored in userscountbefore variable


#5

I can’t see into your code, but it seems the method execureQuery() returns SQLServerResultSet object, so you must gt the actual value out of it. I am not familiar with this class, so I can’t serve here.