文档章节

Python 实现QC Test Plan 数据遍历

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

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

王二铁
2014/05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SQL基础-多表操作

外键 作为外键一定要和关联主键的数据类型保持一致,被绑定的表为主表,需要绑定的表为子表 语法示例 示例方式,详细示例参考下文实例 创建外键 CREATE TABLE 动物表(ID int primary key,动物...

ZHAO_JH
4分钟前
0
0
一文深入了解Redis!

我们使用 Redis 时,会接触 Redis 的 5 种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是 Redis 相对于 Memcached 等的一大优势。 在了解 Redis 的 5 种对象类型的用法和特点...

hensemlee
14分钟前
0
0
庄子

熙熙攘攘,即为名利~ 看淡名利,言语犀利!

柴高八斗之父
27分钟前
1
0
python标准输入输出

input() 读取键盘输入 input() 函数从标准输入读入一行文本,默认的标准输入是键盘。 input 可以接收一个Python表达式作为输入,并将运算结果返回。 print()和format()输出 format()输出...

colinux
36分钟前
0
0
Python 核心编程 (全)

浅拷贝和深拷贝 1.浅拷贝:是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容。相当于把变量里面指向的一个地址给了另一个变量就是浅拷贝,而没有创建一个新的对象,如a...

代码打碟手
48分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部