Data driven execution using testcases shows casting error

Am using the same example as shown in the (docs) to loop and get test data from excel sheet using testcase.

But am getting casting error as below :

Test Cases/SignUp/Signup with invalid data FAILED.
Reason:
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object ‘com.kms.katalon.core.testdata.reader.SheetPOI@4ba380c7’ with class ‘com.kms.katalon.core.testdata.reader.SheetPOI’ to class ‘com.kms.katalon.core.testdata.InternalData’
at Signup with invalid data.run(Signup with invalid data:23)
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:331)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:322)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:301)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:293)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:227)
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 TempTestCase1554986014655.run(TempTestCase1554986014655.groovy:21)

Here is my code:

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.findTestObject
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 GlobalVariable
import com.kms.katalon.core.util.KeywordUtil as KeywordUtil
import com.kms.katalon.core.testdata.InternalData as InternalData

WebUI.callTestCase(findTestCase('Common/OpenBrowser'), [:], FailureHandling.OPTIONAL)
if (WebUI.verifyElementPresent(findTestObject('Page_SignIn/a_New User Sign up'), 10)) {
  WebUI.click(findTestObject('Page_SignIn/a_New User Sign up'))
  InternalData data = findTestData("SignUpTestData")
  
  for (def index : (0..data.getRowNumbers() - 1)) {
      WebUI.sendKeys(findTestObject('Page_SignUp/input_Sign up_useremail'), data.internallyGetValue("varEmail", index))
      WebUI.sendKeys(findTestObject('Page_SignUp/input_Sign up_userpassword'), data.internallyGetValue("varPassword", index))
      WebUI.sendKeys(findTestObject('Page_SignUp/input_Sign up_userpassword_confirmation'), data.internallyGetValue("varConfirmPassword", index))
      WebUI.click(findTestObject('Page_SignUp/input_Cancel_commit'))

      if (WebUI.verifyElementPresent(findTestObject('Page_SignUp/h2_Sign up'), 10)) {
          println(index + ' : There are some validation errors.')
      } else {
	  println(index + ' : Signup successfull.')
      }
  }
} else {
    KeywordUtil.markFailed('No Signup link visible.')
}

Any suggestion?

hello,
are you trying to access exel file data using InternalData? If this is the case, try use this class instead:
https://api-docs.katalon.com/com/kms/katalon/core/testdata/ExcelData.html

1 Like

Thanks @Andrej_Podhajsky. I followed this after your comment and now its working after changing the code to :

import com.kms.katalon.core.testdata.InternalData as InternalData
Exceldata = findTestData("SignUpTestData")

  for (def index : (1..Exceldata.getRowNumbers() - 1)) {
    WebUI.sendKeys(findTestObject('Page_SignUp/input_Sign up_useremail'), Exceldata.getValue("email", index))
		
    WebUI.sendKeys(findTestObject('Page_SignUp/input_Sign up_userpassword'), Exceldata.getValue("password", index))
	
    WebUI.sendKeys(findTestObject('Page_SignUp/input_Sign up_userpassword_confirmation'), Exceldata.getValue("confirm_password", index))
	
    WebUI.click(findTestObject('Page_SignUp/input_Cancel_commit'))
	
    if (WebUI.verifyElementPresent(findTestObject('Page_SignUp/h2_Sign up'), 10)) {
	println(index + ' : There are some validation errors.')
    } else {
	println(index + ' : Signup successfull.')
    }
}