使用 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 AsCType.

之类的东西

下一步:也许我可以尝试在测试计划级别而不是组件级别进行?

自己解决了

详情如下:

首先,通过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==============