文档章节

Python 实现QC Test Plan 数据遍历

蜡笔不小心
 蜡笔不小心
发布于 2014/01/02 17:16
字数 795
阅读 291
收藏 2
Python 代码如下:
#coding=utf-8
'''**************************Parameter************************************************'''
# 这里的参数根据自己想要的路径和Test Set设置,INSTANCE_INFO开关是指遍历TEST SET中最后一次的执行结果,RUN_INFO是指每一条instance的执行记录
TEST_SET_PATH = r"Root\Test Sets\ReleaseQ1304\FB1311\New Feature"
TEST_SET_NAME = r"RP000539_6b_1"
INSTANCE_INFO=True  
RUN_INFO=True

'''**********************************START********************************************'''
from win32com.client import Dispatch
qcServer = "https://10.135.55.13/qcbin"
qcUser = "xianjche"
qcPassword = "#EDCvfr4"
qcDomain = "MBB_BTS"
qcProject = "RP_BTS_IV"

def get_QCConnection(qcServer,qcUser,qcPassword,qcDomain,qcProject):
    '''Get the hardcoded connection to the server and domain.
    Can be made a "real" engine if you try hard.
    Use makepy utility to determine if the version number has changed (TDApiOle80)
    but this works to current version'''
    QCConnection = Dispatch("TDApiOle80.TDConnection")
    QCConnection.InitConnectionEx(qcServer)
    QCConnection.Login(str(qcUser), str(qcPassword))
    QCConnection.Connect(qcDomain, qcProject)    
    return QCConnection
def put_QCConnection(qcConn):
    #If one person logged in to QC changes *anything* on a bug,
    # they hold a global lock on writing to that bug till 
    # thier session times out, so really really remember to logout
    # its painful to wait for your own session to time out
    qcConn.Logout()
qcConn = get_QCConnection(qcServer,qcUser,qcPassword,qcDomain,qcProject)
#-----------------------------截至这里,创建了一个QC的链接对象
def getInstance(qcConn,test_folder,test_set):
    '''
    This funtion is to get the test set objects and return the instances in the set as 
    a list object.
    '''
    TestSetTreeManager = qcConn.TestSetTreeManager
    TSetFolder = TestSetTreeManager.NodeByPath(test_folder)
    TestSetList = TSetFolder.FindTestSets(test_set)
    return TestSetList

def printCaseInfo(name,object,data_name):
    print name + ": ",object.Field(data_name)
 
def RunInfoOfCase(tsInstanceobject):
#     print the detail of every instance run results like this:
#     RN_STATUS:  Failed
#     RN_EXECUTION_DATE:  11/11/13 00:00:00
#     SW build:  RP10970
#     RN_USER_59:  [Pre-check:RP000539_1a]BM don't update  top master statuses/activity in IM object RP Rel3
#     *******
    RunFactory = tsInstanceobject.RunFactory 
    obj_theRun = RunFactory.NewList("")
    
    for result in obj_theRun:
        #printCaseInfo("Case Name",result,"TS_NAME")
        printCaseInfo("RN_STATUS",result,"RN_STATUS")
        printCaseInfo("RN_EXECUTION_DATE",result,"RN_EXECUTION_DATE")
        printCaseInfo("SW build",result,"RN_USER_01")
   #RN_USER_01,这里是QC管理员定义好的数据库字段,当时我是一个一个是出来的这个字段是对应的测试包的信息
        printCaseInfo("Comments",result,"RN_USER_59")
        print "*******"      
      
def lastInfoOfCase(TestSetList,InstanceIfo=True,runInfo=False):
    for tsItem in TestSetList:
        tsTestList = tsItem.TSTestFactory.NewList("")
        print tsTestList.count
        # loop through all test cases in this list
        for tsTestCase in tsTestList:
    #         print "Case Name: ",tsTestCase.Field("TS_NAME")
    #         print "TC_STATUS: ",tsTestCase.Field("TC_STATUS")
    #         print "Comments: ",tsTestCase.Field("TC_USER_01")
    #         print "Release: ",tsTestCase.Field("TC_USER_02")
    #         print "SW Build: ",tsTestCase.Field("TC_USER_03")
            if InstanceIfo == True:
                print "-------------------------------------------------------------------------"
                printCaseInfo("Case Name",tsTestCase,"TS_NAME")
                printCaseInfo("TC_STATUS",tsTestCase,"TC_STATUS")
                printCaseInfo("Release",tsTestCase,"TC_USER_02")
                printCaseInfo("SW Build",tsTestCase,"TC_USER_03")
                printCaseInfo("Priority",tsTestCase,"TC_USER_12")
        #         printCaseInfo("Platform",tsTestCase,"TC_USER_01")
        #         printCaseInfo("Location",tsTestCase,"TC_USER_01")
        #         printCaseInfo("Organization",tsTestCase,"TC_USER_01")
        #         printCaseInfo("Feature",tsTestCase,"TC_USER_01")
        #         printCaseInfo("ExecDate",tsTestCase,"TC_EXEC_DATE")
                printCaseInfo("ExecDate",tsTestCase,"TC_VTS")
        #         printCaseInfo("Detailed Automation Level",tsTestCase,"TC_USER_01")
        #         printCaseInfo("Instance Description",tsTestCase,"TC_USER_01")
                printCaseInfo("Responsible Tester",tsTestCase,"TC_TESTER_NAME")
                printCaseInfo("Comments",tsTestCase,"TC_USER_01")
#                 print "-------------------------------------------------------------------------"    
            if runInfo == True:
                RunInfoOfCase(tsTestCase)
if __name__ == "__main__":
    TestSetList = getInstance(qcConn,TEST_SET_PATH,TEST_SET_NAME)
    lastInfoOfCase(TestSetList,InstanceIfo=INSTANCE_INFO,runInfo=RUN_INFO)
#--+==========================================================================
    put_QCConnection(qcConn)
    print raw_input("the end!!!!!!!!!!!!!")

 这里还只是一个登录到查询测试结果的一个大概的框架,有很多地方可以完善,比如:
可以从新定义TEST_SET_PATH,TEST_SET_NAME为一个字典或者列表,这样就可以每次导出多个Test SET的报告。

© 著作权归作者所有

共有 人打赏支持
蜡笔不小心
粉丝 0
博文 2
码字总数 2258
作品 0
成都
QA/测试工程师
Python导入自定义包或模块

一般我们会将自己写的python模块与python自带的模块分开存放以达到便于维护的目的。 Python 运行环境在查找模块时是对 sys.path 列表进行遍历,如果我们想在运行环境中添加自定义的模块,主要...

独钓渔
2015/08/04
0
0
python 编写自动化小工具 未完成

python 编写自动化小工具 Python split() python数据类型之间的转换 str(demo) python换行写入文件 !/usr/bin/env python ecoding=utf-8 f=open(r"D:opsdevolduseroldused.txt","a+") newlin......

iOS_愛OS
06/21
0
0
go 开发中需要注意的与python的不同点

从python转golang开发已经3个月了,因为写过c++,所以对golang接受的还算快,这段经历也不是很痛苦。伯乐在线上看了一些大神关于python转golang过程中的不适应和吐槽,决定写下篇博客。接下来...

熔遁丶螺旋手里剑
07/29
0
0
更新hive元数据-python代码

因为之前平台部署的hive下的元数据是放在mysql中的,而mysql由设置了为了拉丁文,导致元数据都是乱码的。 于是开始了更新计划,办法就是用svn中的建表语句,提取出来写到元数据的mysql下,然...

yuppy_zyp
2017/11/14
0
0
python编程中常用的12种基础知识总结

python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序、去重,字典排序,字典、列表、字符串互转,时间对象操 作,命令行参数解析(getopt),print 格式化输出,...

dandan.fs
2013/10/14
0
1

没有更多内容

加载失败,请刷新页面

加载更多

为什么 vue 默认导出的是 vue.common.js,它和 vue.js 的区别在哪里,又有什么关系?

这个问题在囧克斯的博客中有提到。 Vue 最早会打包生成三个文件,一个是 runtime only 的文件 vue.common.js,一个是 compiler only 的文件 compiler.js,一个是 runtime + compiler 的文件 ...

粒子数反转
18分钟前
0
0
php正则表达式替换图片地址

<?php /*PHP正则提取图片img标记中的任意属性*/ $str = '<center><img src="/uploads/images/20100516000.jpg" height="120" width="120"><br />PHP正则提取或更改图片img标记中的任意属性<......

mdoo
21分钟前
0
0
一个简单的系统监控脚本

一个简单的系统信息监控脚本 #!/bin/bash# DATE:20181018# System monitor by Kxvzinterval=5while :doecho '==========================================================...

Kxvz
24分钟前
0
0
七牛云助你度寒冬 | 每天 10:24, 新用户抢全额免单

近年来,中美贸易战、股市暴跌、房地产变天、人民币贬值等等,企业艰难生存于冰川夹缝之中,融资发展难上加难。 凛冬将至, 七牛云特此推出免单好礼,为新用户(2018 年 10 月 10 日后新注册...

七牛云
25分钟前
0
0
Echarts X轴刻度标签换行显示

xAxis: [ { 'type':'category', splitLine: {show: false}, axisLabel: { show: true,//是否显示 interval:0,//强制显示 ......

郭周园
30分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部