文档章节

Python 实现QC Test Plan 数据遍历

蜡笔不小心
 蜡笔不小心
发布于 2014/01/02 17:16
字数 795
阅读 295
收藏 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
Pig 读书笔记 + 工作总结(干货很多)

编码规范: 1. 注释: 单行:-- 多行或嵌入式: / / 2. 大小写: 关键字不区分大小写,变量名和udf区分大小写 数据类型: int, long, float, double, chararray, Bytearray, tuple, bag, ma...

王二铁
2014/05/19
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

没有更多内容

加载失败,请刷新页面

加载更多

CentOS配置Tomcat监听80端口,虚拟主机

Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" protocol="HTTP/1......

野雪球
今天
5
0
《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
今天
3
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
今天
4
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
今天
2
0
ActiveMQ消息传送机制以及ACK机制详解

AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机...

watermelon11
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部