1. 程式人生 > >Python呼叫QC(Quality Center) API 獲取缺陷資料

Python呼叫QC(Quality Center) API 獲取缺陷資料

一、執行環境

  • XP系統/Win7 32bit旗艦版(部分Win7 系統不可呼叫QC客戶端元件,原因未明)
  • 安裝QC客戶端(QCExplorerAddIn9.0.exe)及對應服務端
  • Python 2.7.11
  • 需要安裝pywin32 (pip install pywin32 )

二、Python呼叫QC常用操作

2.1 登入連線QC

win32com是Pywin32下面的一個模組,專門負責操作com元件使用。使用Dispatch方法得到可得到一個Application物件,該物件就是QC客戶端應用程式。這裡有個坑,啟動QC客戶端作為獨立程序啟用時無需初始化Com元件,其它使用方式請加pythoncom.CoInitialize()。

from win32com.client import Dispatch
import pythoncom
qcServer = "http://**.**.**.**:80/qcbin/"
qcUser = "qcUser" 
qcPassword = "qcPassword "
qcDomain = "qcDomain "
qcProject = "qcProject"
def ConnectToQC(qcServer, qcUser, qcPassword, qcDomain, qcProject):
    pythoncom.CoInitialize()
    TD = Dispatch(
"TDApiOle80.TDConnection") print("TD Dispatch") TD.InitConnectionEx(qcServer) print("TD InitConnect") TD.Login(qcUser, qcPassword) print("Logged in") TD.Connect(qcDomain, qcProject) print("Connect") return TD #登入成功可得到一個QC連線物件

2.2 獲取QC符合條件的缺陷資料

參考QC開發指南(VBS示例),常用獲取QC缺陷資料步驟:

  1. 得到BugFactory缺陷庫
  2. 得到缺陷庫過濾器物件且使用SetFilter方法設定過濾條件
  3. BugFilter.NewList()得到缺陷資訊,獲取具體Field內容
  4. BugFilter.NewList().Count返回符合條件缺陷個數
    try:
        qcCon = ConnectToQC(qcServer, qcUser, qcPassword, qcDomain, qcProject)
        BugF1 = qcCon.BugFactory
    except:
        print "Connect QC Fail !"
        BugF1=None
    BugFilter = BugF1.Filter
    BugFilter.SetFilter("BG_USER_07","not 已關閉 and not 已否決".decode('utf-8'))
    BugFilter.SetFilter("BG_USER_28", "''")
    bugsCount = BugFilter.NewList().Count
    buglist = BugFilter.NewList()
    for bug in buglist:
        tem_bug={}
        tem_bug["BugsCount"] = bugsCount
        tem_bug["strSummary"] = bug.Field("BG_SUMMARY")
        tem_bug["strDept"] = bug.Field("BG_USER_11")
        tem_bug["strModule"] = bug.Field("BG_USER_04")

2.3 獲取缺陷附件資訊

  1. bug.HasAttachment 判斷缺陷是否存在附件
  2. 得到附件示例,設定儲存路徑下載即可
        if bug.HasAttachment :
            print "Have  Attachment"
            attrDir = "D:\\QCAttachment"
            print attrDir
            if not os.path.exists(attrDir):
                os.makedirs(attrDir)
            for Bug_attach in bug.Attachments.NewList(""):
                objAttrSt = Bug_attach.AttachmentStorage
                objAttrSt.ClientPath = attrDir
                objAttrSt.Load(Bug_attach.Name, True)

2.4 獲取測試集/用例資料

操作步驟和獲取缺陷資料差不多,參考QC指南的示例將VBS指令碼方法對應轉換為python方法操作即可。

三、使用總結

  1. QC 是一款古老且經典的缺陷管理工具,提供的QC指南有非常豐富的VBS呼叫 其API介面的示例教程,呼叫這些介面方便測試整合工作。比如整合自動化測試框架,提取測試資料,登記缺陷,傳送郵件等。
  2. 注意python設定過濾條件的方法為SetFilter(),而VBS使用Filter(),網上使用Python呼叫QC資料較少,使用時結合QC測試管理資料組織方式和API介面文件,轉換為python的方法呼叫即可。
  3. 使用過程坑較多,勇敢去嘗試,參考vbs示例多看介面文件。

四、參考資料

最後提供一份 QC指南,提取碼: k6jr