Ask a Question

Reading the Test-Case and Test-Data from Excel Using Python

SOLVED
JackSparrow
Frequent Contributor

Reading the Test-Case and Test-Data from Excel Using Python

Hii All

 

My Aim is to Read the Execution Col if its Yes then it need to Take the values of that particular row and call those functions :

exlwork.jpg

 

Now for the first when am Trying to Read data from excel I have coded this from the Test-Complete Article

RecNo = 0
# Posts data to the log (helper routine)
def ProcessData():
  global RecNo
  Fldr = Log.CreateFolder("Record: " + aqConvert.VarToStr(RecNo))
  Log.PushLogFolder(Fldr)
  for i in range(DDT.CurrentDriver.ColumnCount):  
    Log.Message(DDT.CurrentDriver.ColumnName[i] + ": " + aqConvert.VarToStr(DDT.CurrentDriver.Value[i]))
  Log.PopLogFolder()
  RecNo = RecNo + 1


# Creates the driver (main routine)
def TestDriver():
 
  # Creates the driver
  # If you connect to an Excel 2007 sheet, use the following method call:

  Driver = DDT.ExcelDriver("C:\\DriverSheet.xls", "TestStep",True)
  
  # Iterates through records
  while not Driver.EOF(): 
    
    ProcessData(); # Processes data
    Driver.Next(); # Goes to the next record
 
  # Closes the driver
  DDT.CloseDriver(Driver.Name);

But the OutPut of this Displaying as Record 1 Record 2 ....Record4 that's it .

Where did i went wrong or else do i need to add something else to the above code

7 REPLIES 7
JackSparrow
Frequent Contributor

And i have Tried otherway to get the data but am facing the Python Run-time Error method cannot be callable

 

def ReadDataFromExcel():
  xl = Sys.OleObject["Excel.Application"]
  book = xl.Workbooks.open("C:\\DriverSheet.xls")
  TCSheet = book.Worksheets("TestCases")
    #TCSheet = WorkBook.worksheets("TestCases")
  TSSteps = book.Worksheets("TestSteps")
  
  TCRows =   TCSheet.UsedRange.Rows.Count
  for i in range(2,TCRows):
    if TCSheet.cells(i,2).Value == "Yes":
      SlNo = TCSheet.cells(i,1).Value
      Module = TCSheet.cells(i,2).Value
      TestCase = TCSheet.cells(i,3).Value
      Duration = 0
      TSRows = TSSheet.UsedRange.Rows.Count
      for j in range (2,TSRows):
        if((TSSheet.cells(j,1).Value == TestCase) and ( TSSheet.cells(j,4).Value == "Yes")):
          Flag = Flag+1
          if Flag ==1:
           Report.CreateTestCaseReportHeader(TestCase)
        TSCols =   TSSheet.UsedRange.Columns.Count
        TSData = ""
        for k in range (5 , TSCols):
            TSData = TSData & TSSheet.cells(j,k).Value & ";"
    Parameter = Split(Tsdata,";")
    BeforeTime = aqDateTime.Time()
    Execute.TSSheet.cells(j,3).value
    AfterTime = aqDateTime.Time()
    Duration = Duration + aqDateTime.TimeInterval(AfterTime,BeforeTime)

The example is creating folders in the log file called Record: 0, Record: 1, etc.

Expand the folders to see the values.

@joseph_michaud  thanks for the info which location it will create the folder and details.

The folders are logical constructs.  (They are implemented as different node types in the log file.)

To see the folder contents click on the 'plus' to the left of the line in the TestComplete Test Log.

 

 

Hi @joseph_michaud

 

There is no'plus' to the left of the line in the TestComplete Test Log.But when i checked in the Additional info it was showing the values , now i can read a single column value and based on that i need to read the entire row values stored in diff param's .Can you please help me out

 

 

 

Assuming your image somehow corresponds to your COM automation example, then the answer is to not concatenate your column values together:

 

        for k in range (5 , TSCols):
            TSData = TSData & TSSheet.cells(j,k).Value & ";"

 

Hi @joseph_michaud for the COM automation am facing an python run-time error "the method is not callable " at the line which is in Red Font .

cancel
Showing results for 
Search instead for 
Did you mean: