Forum Discussion

JackSparrow's avatar
JackSparrow
Frequent Contributor
9 years ago

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 :

 

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

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

    Expand the folders to see the values.

  • JackSparrow's avatar
    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)
    • joseph_michaud's avatar
      joseph_michaud
      Moderator

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

      Expand the folders to see the values.