2014-03-24 72 views
0

我正在通過OTA COM庫與Quality Center合作。我想出瞭如何連接到服務器,但是我在OTA文檔中丟失了關於如何使用它的信息。我需要的是創建一個函數,它將測試名稱作爲輸入並返回來自QC的此測試中的步驟數。 現在我在這個問題上這麼遠。使用python閱讀Quality Center的特定測試步驟

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,但他們沒有幫助。

回答

0

我想出瞭解決方案,如果有更好的方法來做到這一點,歡迎您發佈。

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

使用OTA API從質量中心的數據通常是指通過路徑得到一些元素,創建一個工廠,然後使用工廠來獲取搜索的對象。在你的情況下,你需要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應該不是什麼大事。

+0

是的,謝謝。經過一番調查後,我最終會處理你提到的例子。我認爲現在我會堅持我的解決方案,因爲我不需要閱讀步驟,我只需要知道步驟的數量和'testList [0] .DesStepsNum'適合這一點很好。不過,我會讓你的tsFolder定義它更優雅。 :) – arbulgazar

相關問題