I have an excel file that I bound to a test case for iterating through test data. After each row, I want a column in the data file to be updates with a status like Pass or Fail. I added a column Pass/Fail to my excel spreadsheet and also added a variable called Pass_Fail in the test case(maybe not needed). How can I update the excel file with a Pass or Fail in that column?
I want to be able to do something like -
Datafile.setValue(‘Pass/Fail’, ‘Pass’) 'for that current row
Can someone help me for syntax for this scenario?
The following doc may help:
thanks Kazurayam. I already checked this. As per this code, I need to invoke the file and figure out the row and column and then add that value. But since I already have the data file bound to my test case, I want to be able to just call the Pass/Fail column for the current row it is running and update it.
I see that there is a findTestData object and was wondering if I can use that for this scenario.
Did you ever figure this out? I’m writing a file from one test suite that needs to be used by the next test suite in the test collection, and it’s pulling the original values.
I don’t want to add code to consume the test data, at the very least I would expect the test data to refresh between test suites (even it not between test cases in same test suite.).
Thanks!
@just-passin-thru
I was not able to use the Test Data to do it. But I added code in the Test Listener to save to the Excel file. As soon as the TC is done for that iteration, I use the ID created for the account and a Pass/Fail Variable and save it to the Test file. So the Datafile is updated after every iteration. Below is the code on how I do it in Test Listener. I search for the row in the Test File using one of the values in the variables, in my case below it is the email. Hope this helps.
@AfterTestCase
def sampleAfterTestCase(TestCaseContext testCaseContext, TestData testData) {
String accexcel=“C:\xxxx\xx.xlsx”
String ContractNumber = GlobalVariable.ContractNumber
String PassFail
String ErrorMsg = GlobalVariable.ErrorMsg
switch (testCaseContext.getTestCaseStatus()) {
case 'FAILED':
PassFail = "Fail";
break
case 'ERROR':
PassFail = "Fail";
break
case 'PASSED':
PassFail = "Pass";
break
}
XSSFWorkbook workbook1 = ExcelKeywords.getWorkbook(accexcel)
XSSFSheet sheet1 = ExcelKeywords.getExcelSheet(workbook1, "ISA Bulk Certification")
String studentEmail = testCaseContext.getTestCaseVariables().get("StudentEmail")
int rowIndex = ExcelKeywords.getRowIndexByCellContent(sheet1, studentEmail, 5)
if (ContractNumber == null) { ContractNumber = "Student is not created" }
ExcelKeywords.setValueToCellByIndex(sheet1, rowIndex, 0, ContractNumber)
ExcelKeywords.setValueToCellByIndex(sheet1, rowIndex, 1, PassFail + " - " + ErrorMsg)
ExcelKeywords.saveWorkbook(accexcel, workbook1)
}
Awesome, thanks so much for the detailed reply!