Python调用QC(Quality Center) API 获取缺陷数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuq757693255/article/details/82805896

一、运行环境

  • 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

猜你喜欢

转载自blog.csdn.net/wuq757693255/article/details/82805896
今日推荐