2016-12-05 2 views
3

Ich habe kürzlich ein neues Wiederherstellungsszenario erstellt, das wir zu all unseren bestehenden Run-Skripts hinzufügen möchten, die zu Hunderten zählen.HP UFT - Hinzufügen eines neuen Wiederherstellungsszenarios zu allen vorhandenen Skripts

Leider funktioniert die Einstellung in der Standardeinstellung nur für neue Skript-Kreationen und fügt sie nicht nachträglich allen vorhandenen Skripts hinzu.

Ich habe den HP Support kontaktiert und empfohlen, dass Sie ihn in jedem Skript in den Testeinstellungen | Wiederherstellung manuell für jedes Skript hinzufügen müssen. Ich habe sie gebeten, sie als Feature-Anfrage für zukünftige Releases aufzulisten. Hoffentlich wird dies zum Erfolg führen und den Leuten in der Zukunft helfen.

Wir möchten nun eine Funktion oder ein Skript erstellen, mit dem wir Ordner im Quality Center auflisten und alle darin enthaltenen Skripte durchgehen und aktualisieren können.

Wir haben jedoch festgestellt, dass das Auschecken eines Skripts, das Bearbeiten und das Einchecken während der Laufzeit nicht funktioniert, da Quality Center alle Skripts schreibgeschützt ausführt.

Gibt es eine andere Möglichkeit, ein Wiederherstellungsszenario hinzuzufügen und, was noch wichtiger ist, es im Skript zu speichern?

Ich habe festgestellt, dass Sie Wiederherstellungsszenarien dynamisch während der Laufzeit hinzufügen können, aber das Problem dabei ist, dass Wiederherstellungsszenarien nicht in demselben Lauf funktionieren und nur im nächsten, also müsste das Skript vollständig gestoppt und gestartet werden wieder jedes Mal für jedes Skript.

Jede Hilfe wird geschätzt. Danke

Antwort

1
Sub test() 
Set qtApp = CreateObject("QuickTest.Application") 
qtApp.Launch 
qtApp.Visible = True 

qtApp.TDConnection.Connect "http://qcserver/qcbin", _ 
"MY_DOMAIN", "My_Project", "USER_NAME", "PASSWORD", False 
blsSupportsVerCtrl = qtApp.TDConnection.SupportVersionControl ' Check whether the project supports version control 

Recovery_scenario_path = "[ALM\Resources] Resources\Subject\Library\Recovery.qrs" 

Set testF = qtApp.TDconnection.TestFactory 
Set tFilter = testF.Filter 
tFilter.Filter("TS_TYPE") = "QUICKTEST_TEST" 

Set tList = tFilter.NewList() 
For Each aT In tList 
    Set folderF = qtApp.TDconnection.TestFolderFactory 
    Set fFilter = folderF.Filter 
    fFilter.Filter("AL_ITEM_ID") = aT.FolderID 

    test_script_path = "" 

    Set fList = fFilter.NewList() 
    If fList.count = 1 Then 
     test_script_path = fList(1).Path & "\" & aT.Name 
    Else 
     MsgBox "Unable to determine the test script path" 
     Exit Sub    
    End If 

    qtApp.Open "[ALM\Subject] " & test_script_path ' Test path in HP ALM 
    If blsSupportsVerCtrl Then ' If the project supports version control 
     qtApp.test.CheckOut ' Check out the test 
    End If 

    Set qtTestRecovery = qtApp.test.Settings.Recovery 

    If qtTestRecovery.Count > 0 Then ' If there are any default scenarios specified for the test 
     qtTestRecovery.RemoveAll ' Remove them 
    End If 

    qtTestRecovery.Add Recovery_scenario_path, "ScenarioName1", 1 
    qtTestRecovery.Add Recovery_scenario_path, "ScenarioName2", 2 ' 
    qtTestRecovery.Add Recovery_scenario_path, "ScenarioName3", 3 
    qtTestRecovery.Add Recovery_scenario_path, "ScenarioName4", 4 
    qtTestRecovery.Add Recovery_scenario_path, "ScenarioName5", 5 

    For intIndex = 1 To qtTestRecovery.Count ' Iterate the scenarios 
     qtTestRecovery.Item(intIndex).Enabled = True ' Enable each Recovery Scenario (Note: the 'Item' property is default and can be omitted) 
    Next 

    qtTestRecovery.Enabled = True 
    qtTestRecovery.SetActivationMode "OnError" 
    qtApp.test.Save 

    If blsSupportsVerCtrl And qtApp.test.VerCtrlStatus = "CheckedOut" Then ' If the test is checked out 
     qtApp.test.CheckIn ' Check it in 
    End If 
Next 
qtApp.TDConnection.Disconnect 
qtApp.Quit 
Set App = Nothing 
End Sub 
+0

Ist dieser Lauf von außerhalb von UFT? –

+0

Ja, der obige Code ist in Excel VBA geschrieben. Es startet UFT, öffnet das Testskript von HP ALM, ändert die Einstellung und speichert das Skript. – Barney

+0

ok hat es funktioniert. Tausend Dank. –

0

Dank Barney für die Basis des Codes. Ich habe ein paar Änderungen vorgenommen, die besser zu unseren Zwecken passen.

Wir haben hinzugefügt - überprüfen, ob ein Skript bereits ausgecheckt ist und fügt es in eine Textprotokolldatei. - Bevölkerung der Tabelle mit allen Test fullpaths in einem Ordner/Unterordner

Sub UpdateRecoveryScenarios() 
Dim vLog 
Dim vTFName As String 

    Set qtApp = CreateObject("QuickTest.Application") 
    qtApp.Launch 
    qtApp.Visible = True 
    qtApp.TDConnection.Connect "http://qcserver/qcbin", _ 
      "MY_DOMAIN", "My_Project", "username", "password", False 
    blsSupportsVerCtrl = qtApp.TDConnection.SupportVersionControl ' Check whether the project supports version control 

    Set sh = ThisWorkbook.Sheets("Test List") 

Call PopulateTestNames 'populates all scripts within mainscripts 

    Recovery_scenario_path = "[ALM\Resources] Resources\Subject\Library\Recovery.qrs" 
    vLog = Date 
    N = sh.Cells.CurrentRegion.Rows.Count 'sets N as number of populated rows 
    For i = 1 To N 
    qtApp.Open sh.Cells(i, 1) ' Test path in HP ALM 
     If qtApp.test.VerCtrlStatus = "CheckedOut" Then 
      vLog = vLog & "; " & sh.Cells(i, 1) 
     Else 
      qtApp.test.CheckOut ' Check out the test 

     Set qtTestRecovery = qtApp.test.Settings.Recovery 

     If qtTestRecovery.Count > 0 Then ' If there are any default scenarios specified for the test 
      qtTestRecovery.RemoveAll ' Remove them 
     End If 

     qtTestRecovery.Add Recovery_scenario_path, "ScenarioName1", 1 
     qtTestRecovery.Add Recovery_scenario_path, "ScenarioName2", 2 ' 
     qtTestRecovery.Add Recovery_scenario_path, "ScenarioName3", 3 
     qtTestRecovery.Add Recovery_scenario_path, "ScenarioName4", 4 
     qtTestRecovery.Add Recovery_scenario_path, "ScenarioName5", 5 

     For intIndex = 1 To qtTestRecovery.Count ' Iterate the scenarios 
      qtTestRecovery.Item(intIndex).Enabled = True ' Enable each Recovery Scenario (Note: the 'Item' property is default and can be omitted) 
     Next 

     qtTestRecovery.Enabled = True 
     qtTestRecovery.SetActivationMode "OnError" 
     qtApp.test.Save 

     If blsSupportsVerCtrl And qtApp.test.VerCtrlStatus = "CheckedOut" Then ' If the test is checked out 
      qtApp.test.CheckIn ' Check it in 
     End If 
     End If 
     Next 
qtApp.TDConnection.Disconnect 
qtApp.Quit 
Set App = Nothing 

'create log 
If Len(vLog) > 10 Then 
    vLogArr = Split(vLog, "; ") 
    vCount = UBound(vLogArr) 

    vDate = Date 
    vDate = Replace(vDate, "/", ".") 
    vTFName = "C:\Update Recovery Scenarios\Failed to Update RS Log - " & vDate & ".txt" 
    Set fs = CreateObject("Scripting.FileSystemObject") 
    Set a = fs.CreateTextFile(vTFName, True) 
    For i = 0 To vCount 
     a.WriteLine (vLogArr(i)) 
     a.WriteLine Chr(13) 
    Next 
    a.Close 
End If 

End Sub 





Function PopulateTestNames() 

Set tdc = CreateObject("TDApiOle80.TDConnection") 
tdc.InitConnectionEx "http://hwps-alms-prv02:8080/qcbin" 
tdc.Login "USER_NAME", "PASSWORD" 
tdc.Connect "MY_DOMAIN", "My_Project" 

Set TreeMgr = tdc.TreeManager 
Set oRoot = TreeMgr.TreeRoot("Subject") 
Set folder = oRoot.FindChildNode("MainScripts") 'updates spreadsheet with all tests within mainscripts 
SubjectPath = folder.Path 

Set TestFact = tdc.TestFactory 
Set aTestFilter = TestFact.Filter 
aTestFilter.Filter("TS_SUBJECT") = "^" & SubjectPath & "^" 'selects all the subfolders, too 
aTestFilter.Order("TS_SUBJECT") = 1 '1st order is the subject 
aTestFilter.Order("TS_NAME") = 2 '2nd order is test name 
Set aTestList = aTestFilter.NewList 

Set sh = ThisWorkbook.Sheets("Test List") 
c = 1 
For Each aTest In aTestList 
    Set aCell = sh.Cells(c, 1) 
    thePath = aTest.Field("TS_SUBJECT").Path 
    theName = aTest.Name 
    fullPath = "[ALM] " & thePath & "\" & theName 
    aCell.Value = fullPath ' populate cell with full path 
    c = c + 1 
Next 

End Function 
+0

Es sollte einfach sein, die Liste der UFT-Tests von HP QC mit OTA zu erhalten. Ich werde den Code morgen früh veröffentlichen. – Barney

+0

sortiert das Protokoll bereits aus. Der Versuch, die absoluten Pfade für alle Tests innerhalb von [ALM] Subject \ Scripts \ MainScripts \ und seinen Unterordnern –

+0

zu erhalten, aktualisierte meine obige Antwort mit dem Code, um den HP ALM-Pfad dynamisch zu erstellen und über alle UFT-Skripte zu iterieren. – Barney

Verwandte Themen