I am using OTA to upload test cases from excel to ALM.
I have used the excel add-in and have found it to be quite cumbersome for my project needs, so I am writing a custom script to accomplish the task.
I have version control on, therefore, I need to check out the created test case before I can add steps. Preferably, I'd like to be able to check in the test case again when I am complete. Is there a way to do this with the OTA api?
This is the script that I am using:
Sub UploadTC() Dim QCConnection Dim qcUserName, qcPassword, qcDomain, qcProj Dim tsf, trmgr Dim trfolder, trtest Dim dsf, dstep, steplist Dim TCR As Range Dim cache As Range Dim scount As Range 'Fields Dim TCName As Range Dim TCStep As Range Dim TCDesc As Range Dim TCExRe As Range Dim TCComm As Range Dim TCType As Range '~~~These need to come from a user form. Temporary. qcUserName = "ssoong01" qcPassword = "*********" qcDomain = "HUB" qcProj = "*********" Set QCConnection = CreateObject("TDApiOle80.TDConnection") 'MsgBox ("Connect to QC Server") QCConnection.InitConnectionEx "http://hpalm-qc.*****.net:8080/qcbin/" 'MsgBox ("Connection Established.") QCConnection.Login qcUserName, qcPassword 'MsgBox ("Login Authenticated.") QCConnection.Connect qcDomain, qcProj 'MsgBox ("Connected to Project.") Set tsf = QCConnection.TestFactory Set trmgr = QCConnection.TreeManager With ThisWorkbook.Sheets("Test Cases") 'Create Project Folder Set trfolder = trmgr.NodebyPath("Subject").AddNode(.Cells(3, 2)) trfolder.Post 'Loop through each row in sheet from A4 Set cache = ThisWorkbook.Sheets("Values").Range("$A$3") For Each TCR In .Range(.Cells(4, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1)) Set TCName = .Range(TCR.Offset(0, 1).Address) Set TCType = .Range(TCR.Offset(0, 7).Address) 'If Folder Then If TCType.Value = "Folder" Then Set trfolder = trmgr.NodebyPath("Subject" & TCR.Value).AddNode(TCName.Value) trfolder.Post 'If Test Case Then ElseIf TCType.Value = "MANUAL" Then 'If cached TC name = current row TC name then skip If TCName = cache.Value Then 'Add Test Case ElseIf TCName <> cache.Value Then Set trfolder = trmgr.NodebyPath("Subject" & TCR.Value) Set trtest = trfolder.TestFactory.AddItem(TCName.Value) ' set values trtest.Field("TS_NAME") = TCName trtest.Field("TS_RESPONSIBLE") = qcUserName ' Designer trtest.Field("TS_TYPE") = "MANUAL" trtest.Post 'Steps Set dsf = trtest.DesignStepFactory Set steplist = dsf.Newlist("[empty]") ' loop through all the steps Set scount = .Range(TCName.Address) Do Set TCStep = .Range(scount.Offset(0, 1).Address) Set TCDesc = .Range(scount.Offset(0, 2).Address) Set TCExRe = .Range(scount.Offset(0, 3).Address) Set TCComm = .Range(scount.Offset(0, 4).Address) Set dstep = dsf.AddItem(Null) dstep.Field("DS_STEP_NAME") = TCStep.Value dstep.Field("DS_DESCRIPTION") = TCDesc.Value dstep.Field("DS_EXPECTED") = TCExRe.Value Set scount = .Range(scount.Offset(1).Address) Loop Until scount.Value <> scount.Offset(-1).Value dstep.Post 'cache TC name cache.Value = TCName.Value End If Else: MsgBox ("Invalid type at cell: " & TCR.Address) End If Next TCR
Any help is appreciated. Thanks.