使用 OTA 更改 ALM 测试计划中的参数值
Change parameter values in ALM test plan using OTA
有什么方法可以在 ALM 中使用 OTA 来操纵测试计划吗?
例如,我在 ALM 中有 350 个测试计划,我想为每个计划更改参数设置。手动做是愚蠢的。
更新 1:
在对 OTA 进行了数小时的研究之后,这是我现在得到的:
通过使用下面的代码,我可以进入测试计划并获取其名称,但仍然不知道如何获取其中的 BPComponents 的完整列表...
set tdc = createobject("TDApiOle80.TDConnection")
tdc.InitConnectionEx "http://URL:8080/qcbin"
tdc.Login "Username","Password"
tdc.Connect "Domain","Project"
If tdc.Connected = true Then
print "Connect successful!!!"
End If
Set TreeMgr = tdc.TreeManager
Set SubjRoot = TreeMgr.NodeByPath("Subject\")
Set TestFact = tdc.TestFactory
Set SubjectNodeList = SubjRoot.FindChildren("", False, "")
For Each oSubjectNode In SubjectNodeList
'Print out the subject path
'Print oSubjectNode.Path
'Does this have any tests?
Set TestFilter = TestFact.Filter
TestFilter.Filter("TS_SUBJECT") = Chr(34) & oSubjectNode.Path & Chr(34)
Set TestList = TestFact.NewList(TestFilter.Text)
For Each oTest In TestList
print oTest.Name
'=============get stuck here========================
Set Components=oTest.BPComponent
Set Component=Components.Item(1)
'=============trying to get components list==========
Next
Next
This post 似乎提供了一种编辑参数值的方法。但问题是 Test
对象不支持 Test.Load
方法。
更新 2:
经过更多的研究,我认为我们不能通过 UFT/QTP 来做到这一点。原因是:根据OTA官方指南(link here),我们需要"cast the Test
to BusinessProcess
"。这似乎无法在 VBScript 中完成,因为 VBS 没有 Dim As
或 CType
.
之类的东西
下一步:也许我可以尝试在测试计划级别而不是组件级别进行?
自己解决了
详情如下:
首先,通过OTA,我们无法触及Component级别;但我们可以操纵测试 plan/lab 级别。这意味着如果我们想使用 OTA 更改参数值,我们需要在测试计划级别创建一个全局参数并更改它。
下面是一些示例代码:
'=====================Initial ALM Connection=================='
set tdc = createobject("TDApiOle80.TDConnection")
tdc.InitConnectionEx "ALM URL"
tdc.Login "UserName","Password"
tdc.Connect "Domain","Project"
If tdc.Connected = true Then
print "Connect successful!!!"
else
'do something'
End If
'=====================Initial ALM Connection=================='
'====================Get all test plans under a folder========================
Set treeMng = tdc.TreeManager
Set sourceFolder = treeMng.NodeByPath("Subject\Path")
Set testF = sourceFolder.TestFactory
' Find the test ID.
Set aFilter = testF.Filter
Set TestList = testF.NewList("")
For each test in TestList
print test.Name
'=========Can search a specific test plan here'
If test.Name = "TestCaseName" Then
set TestObj = test
End If
Next
'====================Get all test plans under a folder========================
'====================Modify test plan name===================='
'After get a specific TestObj
TestObj.Name = "New Name"
TestObj.Post
'====================Modify test plan name===================='
'====================Change parameter value=====================
Set para = TestObj.TestParameterFactory
Set paraList = Para.NewList("")
For each a in paraList
If a.Name = "Para1" Then
a.Name = "Modified1"
a.DefaultValue = "ValueModified1"
a.Post
a.UnLockObject
End If
If a.Name = "para2" Then
a.Name = "Modified2"
a.DefaultValue = "ValueModified2"
a.Post
a.UnLockObject
End If
Next
'====================Change parameter value=====================
'====================Search a specific test plan, copy and paste==============
Set treeMng = tdc.TreeManager
Set sourceFolder = treeMng.NodeByPath("Subject\Path")
Set testF = sourceFolder.TestFactory
' Find the test ID.
Set aFilter = testF.Filter
Set TestList = testF.NewList("")
TestName = """Test_Case_Name"""
aFilter.Filter("TS_NAME") = TestName
Set TestsList = aFilter.NewList()
Set Test = TestsList.Item(1)
print Test.id
Set iscp = testF
clipboard = iscp.CopyToClipBoard(Test.ID, 0, "")
Set destFolder = treeMng.NodeByPath("Subject\Path")
Set testF = destFolder.TestFactory
Set iscp = testF
iscp.PasteFromClipBoard clipboard,destFolder.NodeID,0,1
destFolder.Refresh
'====================Search a specific test plan, copy and paste==============
有什么方法可以在 ALM 中使用 OTA 来操纵测试计划吗?
例如,我在 ALM 中有 350 个测试计划,我想为每个计划更改参数设置。手动做是愚蠢的。
更新 1:
在对 OTA 进行了数小时的研究之后,这是我现在得到的:
通过使用下面的代码,我可以进入测试计划并获取其名称,但仍然不知道如何获取其中的 BPComponents 的完整列表...
set tdc = createobject("TDApiOle80.TDConnection")
tdc.InitConnectionEx "http://URL:8080/qcbin"
tdc.Login "Username","Password"
tdc.Connect "Domain","Project"
If tdc.Connected = true Then
print "Connect successful!!!"
End If
Set TreeMgr = tdc.TreeManager
Set SubjRoot = TreeMgr.NodeByPath("Subject\")
Set TestFact = tdc.TestFactory
Set SubjectNodeList = SubjRoot.FindChildren("", False, "")
For Each oSubjectNode In SubjectNodeList
'Print out the subject path
'Print oSubjectNode.Path
'Does this have any tests?
Set TestFilter = TestFact.Filter
TestFilter.Filter("TS_SUBJECT") = Chr(34) & oSubjectNode.Path & Chr(34)
Set TestList = TestFact.NewList(TestFilter.Text)
For Each oTest In TestList
print oTest.Name
'=============get stuck here========================
Set Components=oTest.BPComponent
Set Component=Components.Item(1)
'=============trying to get components list==========
Next
Next
This post 似乎提供了一种编辑参数值的方法。但问题是 Test
对象不支持 Test.Load
方法。
更新 2:
经过更多的研究,我认为我们不能通过 UFT/QTP 来做到这一点。原因是:根据OTA官方指南(link here),我们需要"cast the Test
to BusinessProcess
"。这似乎无法在 VBScript 中完成,因为 VBS 没有 Dim As
或 CType
.
下一步:也许我可以尝试在测试计划级别而不是组件级别进行?
自己解决了
详情如下:
首先,通过OTA,我们无法触及Component级别;但我们可以操纵测试 plan/lab 级别。这意味着如果我们想使用 OTA 更改参数值,我们需要在测试计划级别创建一个全局参数并更改它。
下面是一些示例代码:
'=====================Initial ALM Connection=================='
set tdc = createobject("TDApiOle80.TDConnection")
tdc.InitConnectionEx "ALM URL"
tdc.Login "UserName","Password"
tdc.Connect "Domain","Project"
If tdc.Connected = true Then
print "Connect successful!!!"
else
'do something'
End If
'=====================Initial ALM Connection=================='
'====================Get all test plans under a folder========================
Set treeMng = tdc.TreeManager
Set sourceFolder = treeMng.NodeByPath("Subject\Path")
Set testF = sourceFolder.TestFactory
' Find the test ID.
Set aFilter = testF.Filter
Set TestList = testF.NewList("")
For each test in TestList
print test.Name
'=========Can search a specific test plan here'
If test.Name = "TestCaseName" Then
set TestObj = test
End If
Next
'====================Get all test plans under a folder========================
'====================Modify test plan name===================='
'After get a specific TestObj
TestObj.Name = "New Name"
TestObj.Post
'====================Modify test plan name===================='
'====================Change parameter value=====================
Set para = TestObj.TestParameterFactory
Set paraList = Para.NewList("")
For each a in paraList
If a.Name = "Para1" Then
a.Name = "Modified1"
a.DefaultValue = "ValueModified1"
a.Post
a.UnLockObject
End If
If a.Name = "para2" Then
a.Name = "Modified2"
a.DefaultValue = "ValueModified2"
a.Post
a.UnLockObject
End If
Next
'====================Change parameter value=====================
'====================Search a specific test plan, copy and paste==============
Set treeMng = tdc.TreeManager
Set sourceFolder = treeMng.NodeByPath("Subject\Path")
Set testF = sourceFolder.TestFactory
' Find the test ID.
Set aFilter = testF.Filter
Set TestList = testF.NewList("")
TestName = """Test_Case_Name"""
aFilter.Filter("TS_NAME") = TestName
Set TestsList = aFilter.NewList()
Set Test = TestsList.Item(1)
print Test.id
Set iscp = testF
clipboard = iscp.CopyToClipBoard(Test.ID, 0, "")
Set destFolder = treeMng.NodeByPath("Subject\Path")
Set testF = destFolder.TestFactory
Set iscp = testF
iscp.PasteFromClipBoard clipboard,destFolder.NodeID,0,1
destFolder.Refresh
'====================Search a specific test plan, copy and paste==============