QC OTA
Note: First make sure QTP connect to QC.(转自:http://blog.csdn.net/franktan2010/article/details/7243314)
27.1 QC Path:
QC path’s root folder is “Subject”. So all QC path startwith “[QualityCenter]Subject”. Set QC path into QTP’s Toolsà Options…àFolder(Tab)
QTP use QC paths:
DataTable.Import “[QualityCenter]Subject\Input\TestCase1.xls” DataTable.ImportSheet “[QualityCenter]Subject\Input\TestCase1.xls”, “Global”, “Global” ExecuteFile “[QualityCenter]Subject\ScriptConfiguration.vbs” |
Note: QTP cannot use relative path, but you can write a function.
27.2 QCUtil Object
QCUtil Object provides the following properties:
Returns the Quality Center OTA Run object (QC: Test Plan). |
|
Returns the collection of tests (QC: Test Lab). |
|
Returns the Quality Center OTA TSTest object (QC: Test Lab). |
|
Boolean value indicates whether QTP is currently connected to a QC. |
|
Returns the Quality Center OTA QCConnection objectd |
|
Returns the Quality Center OTA Test object (QC: Test Plan). |
Example to use QCUtil object:
'Are we connecting to QC? IsQCConnected = Not (QCUtil.QCConnection Is Nothing) |
'Is the test stored in QC IsTestPresentInQC = Not (QCUtil.CurrentTest Is Nothing) |
'Is the test running from QC IsTestRunningFromQC = Not (QCUtil.CurrentRun Is Nothing) |
27.3 QC Open Test Architecture (OTA)
即QCCOM, 略。最顶层是TDConnectionObject.TDConnection Object TDConnectionObject TDConnection Object TDConnection Object TDConnection Object
27.4 TDConnectionObject
If QC connected:
|
Set TDConnection = QCUtil.QCConnection print TDConnection.Connected |
If QC not connected:
Set qtApp = CreateObject("QuickTest.Application") qtApp.Launch qtApp.Visible = True qtApp.TDConnection.Connect "http://qcserver ", _ If qtApp.TDConnection.IsConnected Then print "Connect to qc is successful" & qtApp.TDConnection.User & “log in” End if |
27.4 TheCommand and Recordset Object
The Command and Recordset object allow us to get data from QC DB.
Note:注意DB返回数据的格式,如果是HTML格式,就得再写一个fucntion转换成plainText格式。
'Get the TD OTA object reference Set TDConnection = QCUTil.QCConnection 'Get the ID of the current test in the Data base TestID = QCutil.CurrentTest.Field ("TS_TEST_ID") 'Get all the design steps present in the Test and 'read the Step Description and Expected Text Set TDCommand = TDConnection.Command TDCommand.CommandText = _ "Select DS_DESCRIPTION, DS_EXPECTED From DESSTEPS where DS_TEST_ID = " & TestID 'Execute the query Set TDRes = TDCommand.Execute 'Loop throuh all the results in the recordset While Not TDRes.EOR Msgbox TDRes.FieldValue("DS_DESCRIPTION") Msgbox TDRes.FieldValue("DS_EXPECTED") TDRes.Next Wend |
27.5 The AttachmentFactory Collection
AttachmentFactory collection can access attachments present in thefollowing object:
Requirement Tab; |
Test Plan Tab: Folder, Test, Design steps; |
Test Lab Tab: Folder, Test, TestSet, TestRun, TestStep |
Defect; |
Here is the example to get attachment:
Set oAttachments = FromPlace.Attachments 'Get a collection of all attachments present Set allAttachment = oAttachments.NewList("") For Each oAttachment In allAttachment ‘process each attachments Next |
Download attachment as the “process each attachments” (above)
Set FSO = CreateObject("Scripting.FileSystemObject") oAttachment.Load True,"" 'Copy the file from temporary downloaded location to the TOPlace folder FSO.CopyFile oAttachment.FileName, _ TOPlace & oAttachment.Name(1),True |
27.6 Simple way to download files from QC:PathFinder & Locate method
Note: 1PathFinder based on the folders specified in the Folder Tab (ToolsàOptionàFolders)
2 The method only used on foldersor tests present in the test plan tab
3 If QTP local temporary fileshave same name file, will not download. So clear temporary files beforedownload.
sFilePath = PathFinder.Local(“QCcommon.vbs”)
‘Or full path
sFilePath = PathFinder.Local(“[QualityCenter] Subject\AllTest\QCcommon.vbs”)
27.7 Uploading attachment to QC
'Get attachments (AttachmentFactory) Set oAttachments = QCUtil.CurrentTest.Attachments 'Now just upload the new one Set oNewAttachment = oAttachments.AddItem(Null) oNewAttachment.FileName = NewFileName oNewAttachment.Type = 1 'TDATT_FILE oNewAttachment.Post |
27.8 Getting the Current Test location
'Function to get the current test path is running from Public Function GetCurrentTestPath() GetCurrentTestPath = "" 'The test in not in QC If QCUtil.CurrentTest is Nothing Then Exit Function 'Get the test name testName = CurrentTest.Name 'Get the ID of the parent folder parentFolderID = CurrentTest.Field("TS_SUBJECT").NodeID 'Get the complete path of parent folder parentFolderPath = QCUtil.QCConnection.TreeManager.NodePath(parentFolderID) GetCurrentTestPath = parentFolderPath & "" & testName End Function |
27.9 Gettingthe Current Test Set Location:
'Path for the folder where the Test Set exists testSetFolder = QCUtil.CurrentTestSet.TestSetFolder.Path |
27.10Enumerating all the tests in test lab tab
The Test Lab folderstructure is managed by TestSetTreeManager object. TestSet object are managedby TestSetFactory object, Each TestSet object contains test managed byTSTestFactory object.
--TestSetFactory –TestSet –ConditionFactory –Condition --TSTestFactory--TSTest--RunFactory |
--TestSetTreeManager--TestSetFolder—TestSetFactory |
Here is the sample code:
'This function can be used to enumerate all the test present inside a testSet. Set allTests = oTestSet.TSTestFactory.NewList("") For each oTest in allTests Print "Test - " & oTest.name Next |
Function EnumerateAllTestSets(ByVal FolderPath) 'Check if the folder object has been passed or a string path If isObject(FolderPath) Then Set oTestSetFolder = FolderPath ElseIf FolderPath = "" or LCase(FolderPath) = "root" then 'Root folder needs special handling Set oTestSetFolder = QCUtil.QCConnection.TestSetTreeManager.Root Else 'Get the object from the path Set oTestSetFolder = QCUtil.QCConnection.TestSetTreeManager.NodeByPath(FolderPath) End If 'A root folder cannot have any test set. So we need not check 'for any testsets in case of the Root Folder. If oTestSetFolder.name <> "Root" Then Print oTestSetFolder.Path 'Loop through all the test sets present in the folder Set allTestSets = oTestSetFolder.TestSetFactory.NewList("") For each oTestSet in allTEstSets Print "Test Set - " & oTestSetFolder.Path & "" & oTestSet.Name 'Call another function to enumerate all the test inside the current test set EnuemrateTestInTestSet oTestSet Next End If |
27.11Enumerating all the tests in test plan tab
QC OTA model’s TreeManager object manage the folderstructure of test plan tab. Each folder contains folders/tests. Tests aremanaged by a TestFactory object.
--TestFactory--Test--DesignStepFactory--DesignStep |
--TreeManager--SysTreeNode |
Here is the sample code:
Public Function EnumerateAllTestsinTestPlan(ByVal folderPathOrObject) If IsObject(folderPathOrObject) Then 'We already have a reference to the folder object Set oTestPlanFolder = folderPathOrObject ElseIf folderPathOrObject = "" or lcase(folderPathOrObject) = "subject" Then 'Get the root subject folder Set oTestPlanFolder = QCutil.QCConnection.TreeManager.NodeByPath("Subject") Else 'Get the folder using the string path Set oTestPlanFolder = QCUTil.QCConnection.TreeManager.NodeByPath(folderPathOrObject) End If ‘And then use NewList on that object to get the collection of tests present in the folder Set oTestFactory = oTestPlanFolder.TestFactory.NewList("") For each oTest in oTestFactory MsgBox oTestPlanFolder.Path & "" & oTest.Name Next 'Recursively call this function for each sub folder Set allSubFolders = oTestPlanFolder.NewList() For each oFolder in allSubFolders EnumerateAllTestsinTestPlan oFolder Next End Function |
QC OTA的更多相关文章
- ALM/QC OTA Field in Database(查询ALM数据库的字段)
在使用ALM的OTA接口编写脚本的时候,通常会需要知道各个选项在数据库中对应的字段,才能通过脚本读取或写入数据.比如要获取test case的step内容,要在测试结束时将测试实际结果写回test s ...
- QC API全系列揭秘之Test Execution操作(全网首发)
(原创文章,转载请注明出处.) 一.QC简介: Quality Center存在至今已经走过了10多个年头,名字从一开始的TD,到后来的QC,再到现在的ALM.所属公司从开始的Mercury到现在的H ...
- 史上最全QC学习方案,值得收藏!
Quality Center是一个基于Web的强大的测试管理工具,可以组织和管理应用程序测试流程的所有阶段,**制定测试需求.计划测试.执行测试和跟踪缺陷.此外,通过Quality Center还可以 ...
- QC在win7下不能访问QC服务器介绍
本地访问不了服务器QC的主要几个原因总结 服务器serverjbossextensionhpcmd 2016-03-24 兼容性问题: 1.在服务端QC的安装目录下jboss\server\def ...
- The difference between QA, QC, and Test Engineering
Tuesday, March 06, 2007 Posted by Allen Hutchison, Engineering Manager and Jay Han, Software Enginee ...
- 使用HTTPS网站搭建iOS应用内测网站(OTA分发iOS应用)
为什么要搭建应用内测网站呢? 1.AppStore的审核速度比较慢,万一被拒,还得等,而且一旦发布,任何人都可以下载,而有些时候只有老板想知道最新的修改是否符合要求,万一不符合要求呢?又要修改了. 2 ...
- Delphi QC 记录
各网友提交的 QC: 官方网址 说明 备注 https://quality.embarcadero.com/browse/RSP-12985 iOS device cannot use indy id ...
- QC学习一:Windows环境中Quality Center 9.0安装详解
一.安装前准备 1.安装环境:windows XP.SQL Server2005 2.准备安装文件:Quality Center 9.0 (qc10以上,包括qc10,qc只支持安装在服务器操作系统上 ...
- 前端Mvvm QC 上传了测试版
QC是一个前端MVVM框架,适合用来构建复杂的业务逻辑 项目地址:https://github.com/time-go/qc 技术支持QQ群:330603020 QC特点: 1.良好的浏览器兼容性(兼 ...
随机推荐
- [Bzoj2243][SDOI2011]染色(线段树&&树剖||LCT)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2243 线段树+树链剖分,在线段树需要每次用lt和rt两个数组记录当前区间的左右边界的颜色 ...
- java实现mysql数据库从一张表插入数据到另一张表
创建两张表: create table employee( id ), name ), email ), gender ) ); create table copyEmployee( id ), na ...
- P5445 [APIO2019]路灯(树套树)
P5445 [APIO2019]路灯 转化为平面上的坐标(x,y),set维护连续区间. 用树套树维护矩阵加法,单点查询. 注意维护矩阵差分的时候, $(x,y,v)$是对$(x,y)(n+1,n+1 ...
- Java解析Groovy和Shell的代码
一.使用场景 在整个系统中,通用型的代码基本没什么变化,需要变动的仅仅是业务相关的代码.那么我们就会把一些业务代码简单编码一下放在数据库中.通过数据库的配置,可以直接从数据库中查找出来编码处理一下,来 ...
- CSS样式表能否控制文字禁止选择,复制, 焦点
div中禁止文字被选择 在做div的点击计数事件时,遇到一个小问题. 因为div里面有文字,所以当点击多次时,特别是鼠标点的比较快的时候,文字会被选中. 查了下,用css和javascript可以实现 ...
- elasticsearch 基础 —— Update API
Update API 更新API允许基于提供的脚本更新文档.该操作从索引获取文档(与分片并置),运行脚本(使用可选的脚本语言和参数),并对结果进行索引(也允许删除或忽略操作).它使用版本控制来确保在& ...
- Codeforces Round #393 (Div. 2) - C
题目链接:http://codeforces.com/contest/760/problem/C 题意:有n个烤串,并且每个烤串起初都放在一个火盆上并且烤串都正面朝上,现在定义p序列,p[i]表示在i ...
- HttpRunnerManager安装部署(centos7)
一.安装python3环境 参考 二.安装依赖环境 根据根目录requirements.txt文件安装依赖,可以使用pip安装 #pip3 install -r requirements.txt 会遇 ...
- new和malloc申请内存失败后的处理
1.c++ 标准 new 失败是抛出异常的,Visual C++ 6.0中返回一个NULL指针. 使用new(std::nothrow)可以保证失败时返回NULL; 因此完全可以 #define ne ...
- [BZOJ1023][SHOI2008]cactus仙人掌图 DP
题目链接 套路就是先考虑一般的树上做法.求直径的dp的做法大家应该都会吧. 那么设\(dp[i]\)表示\(i\)的子树中的点到\(i\)的最大距离. 在dp的过程中 \[ ans=\max\{dp[ ...