文档章节

Python 实现QC Test Plan 数据遍历

蜡笔不小心
 蜡笔不小心
发布于 2014/01/02 17:16
字数 795
阅读 287
收藏 2
点赞 1
评论 0
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实现MaxCompute UDF/UDAF/UDTF

MaxCompute 的 UDF 包括:UDF,UDAF 和 UDTF 三种函数,本文将重点介绍如何通过 Python实现这三种函数。 参数与返回值类型 参数与返回值通过如下方式指定: @odps.udf.annotate(signature) ...

隐林 ⋅ 2017/12/20 ⋅ 0

Python3: fp-growth算法代码(提供py文件,可直接调用)

一、写在前面 fp-growth算法是一个生成频繁项集的算法,其主要利用了FP树的数据结构,整个生成过程只需要遍历数据集2次。 本fp-growth代码是基于开源代码fp-growth的实现(github代码:https...

quiet_girl ⋅ 05/13 ⋅ 0

IT届各位大佬告诉你,为什么学习AI之前要学习Python!

在之前的全国高中信息“新课标”出炉!要想报考这些专业,必须得会……中,我们从政策上给大家阐述了为什么要学Python。今天,我们就来听听IT届各位大佬是怎么说的。 编程是一项社交活动。 ...

python达人 ⋅ 04/30 ⋅ 0

Python数据科学(八)- 资料探索与资料视觉化

传送门: Python数据科学(一)- python与数据科学应用(Ⅰ) Python数据科学(二)- python与数据科学应用(Ⅱ) Python数据科学(三)- python与数据科学应用(Ⅲ) Python数据科学(四)- 数据收...

_知几 ⋅ 05/22 ⋅ 0

笨办法学 Python · 续 练习 35:解释器

练习 35:解释器 原文:Exercise 35: Interpreters 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 解析中的最后一个练习应该既具有挑战性又有趣。你终于可以看到,你的微型 Python 脚...

apachecn_飞龙 ⋅ 2017/08/13 ⋅ 0

融和原图和标签图,python实现可视化标签数据,检测标定分割数据的好坏

融和原图和标签图,python实现可视化标签数据,检测标定分割数据的好坏 深度学习的重要环节是数据的采集,采集的数据到底能不能用,是否适合我们的应用场景,需要我们自己检查标定的数据,那...

suodislie ⋅ 04/12 ⋅ 0

Python才是人工智能AI的首选编程语言,你值得拥有……

在所有编程语言里,Python并不算萌新,从1991年发布第一个版本,至今已经快30年了。 最近几年,随着人工智能概念的火爆,Python迅速升温,成为众多AI从业者的首选语言。 根据数据平台 Kaggle...

M耀文 ⋅ 05/19 ⋅ 0

Python实现批量解析PDF文件提取内容并写入到Excel中

摘要:最近需要将一批PDF文件中的某些数据整理到Excel中,因为文件数量接近20w+,手动更新几乎不现实,于是就提取关键词和内容动手写了个Python小工具,以实现自动完成上述目标。 要求: 基本...

_周小董 ⋅ 05/20 ⋅ 0

python 模板实现-引擎的编写(有时间试一下)

关于简介和模板问题请在参考文档查看 参考文档: 1.模板的编写:https://blog.csdn.net/MageeLen/article/details/68920913 一、引擎的编写 1.Templite 类 模板引擎的核心就是这个Templite类...

xiaoge2016 ⋅ 05/10 ⋅ 0

动态规划之01背包问题(python实现)

动态规划之01背包问题python实现 背包问题(Knapsack problem)是一种组合优化的NP完全问题。 问题描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能...

qq_34178562 ⋅ 04/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 42分钟前 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部