使用python从Quality Center读取特定的测试步骤

时间:2014-03-24 11:58:37

标签: python python-2.7 hp-quality-center

我正在通过OTA COM库与Quality Center合作。我想出了如何连接到服务器,但我在OTA文档中迷失了如何使用它。我需要的是创建一个函数,它将测试名称作为输入,并从QC返回此测试中的步骤数。 就目前而言,我在这个问题上走得很远。

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

任何关于血统python示例或教程的帮助都将受到高度赞赏。目前我找到了thisthis,但他们没有帮助。

2 个答案:

答案 0 :(得分:1)

我找到了解决方案,如果有更好的方法可以发布,欢迎发布。

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

答案 1 :(得分:1)

使用OTA API从Quality Center获取数据通常意味着按路径获取一些元素,创建工厂然后使用工厂来搜索对象。在您的情况下,您需要TreeManager来获取测试计划中的文件夹,然后您需要一个TestFactory来获得测试,最后您需要DesignStepFactory来获取这些步骤。我不是Python程序员,但我希望你能从中获得一些东西:

mg=td.TreeManager
npath="Subject\Test"
tsFolder = mg.NodeByPath(npath)
testFactory = tsFolder.TestFactory
testFilter = testFactory.Filter
testFilter["TS_NAME"] = "Some Test"
testList = testFactory.NewList(testFilter.Text)
test = testList.Item(1) # There should be only 1 item
print test.Name
stepFactory = test.DesignStepFactory
stepList = stepFactory.NewList("")
for step in stepList:
    print step.StepName

需要一些时间来习惯QC OTA API文档,但我发现它非常有用。我的几乎所有知识都来自API文档中的示例 - 对于您的问题,有一些示例,如“查找唯一测试”或“获取具有名称和路径的测试对象”。这两个示例都是Test对象的示例。即使示例是在VB中,也不应该将它们适用于Python。