Search code examples
pythonpython-2.7hp-quality-center

Reading specific test steps from Quality Center with python


I am working with Quality Center via OTA COM library. I figured out how to connect to server, but I am lost in OTA documentation on how to work with it. What I need is to create a function which takes a test name as an input and returns number of steps in this test from QC. For now I am this far in this question.

import win32com
from win32com.client import Dispatch
# import codecs #to store info in additional codacs
import re
import json
import getpass #for password
qcServer = "***"
qcUser = "***"
qcPassword = getpass.getpass('Password: ')
qcDomain = "***"
qcProject = "***"
td = win32com.client.Dispatch("TDApiOle80.TDConnection.1")
#Starting to connect
td.InitConnectionEx(qcServer)
td.Login(qcUser,qcPassword)
td.Connect(qcDomain, qcProject)
if td.Connected == True:
    print "Connected to " + qcProject

else:
    print "Connection failed"
#Path = "Subject\Regression\C.001_Band_tones"
mg=td.TreeManager
npath="Subject\Regression"
tsFolder = td.TestSetTreeManager.NodeByPath(npath)
print tsFolder    

td.Disconnect
td.Logout
print "Disconnected from " + qcProject

Any help on descent python examples or tutorials will be highly appreciated. For now I found this and this, but they doesn't help.


Solution

  • I figured out the solution, if there is a better way to do this you are welcome to post it.

    import win32com
    from win32com.client import Dispatch
    import getpass
    
    def number_of_steps(name):
        qcServer = "***"
        qcUser = "***"
        qcPassword = getpass.getpass('Password: ')
        qcDomain = "***"
        qcProject = "***"
        td = win32com.client.Dispatch("TDApiOle80.TDConnection.1")
    
        #Starting to connect
        td.InitConnectionEx(qcServer)
        td.Login(qcUser, qcPassword)
        td.Connect(qcDomain, qcProject)
        if td.Connected is True:
            print "Connected to " + qcProject
    
        else:
            print "Connection failed"
    
        mg = td.TreeManager  # Tree manager
        folder = mg.NodeByPath("Subject\Regression")
        testList = folder.FindTests(name)  # Make a list of tests matching name (partial match is accepted)
        if testList is not None:
            if len(testList) > 1:
                print "There are multiple tests matching this name, please check input parameter\nTests matching"
                for test in testList:
                    print test.name
                    td.Disconnect
                    td.Logout
                    return False
            if len(testList) == 1:
                print "In test %s there is %d steps" % (testList[0].Name, testList[0].DesStepsNum)
        else:
            print "There are no test with this test name in Quality Center"
            td.Disconnect
            td.Logout
            return False
        td.Disconnect
        td.Logout
        print "Disconnected from " + qcProject
        return testList[0].DesStepsNum  # Return number of steps for given test