My Blog List

Wednesday, March 22, 2017

Triggering UFT/QTP Tests from CI Tools (outside of ALM/QC)

In the CI (Continuous Integration) world, we would be in the position to trigger UFT/QTP scripts from outside of ALM/QC and there we may have 2 options like;

1. Running UFT tests stored in plain Windows File System folder
2. Running UFT tests stored in ALM

Both these options are being utilized by lot of testers effectively and working great. Here I would like to give some light on what if we need to update results to particular test set instance in ALM while triggering tests from outside of ALM. 
You should have seen the result options in the dialog which pops up when we are trying start running from UFT/QTP itself and we will select the option and hit OK to start running. Here we need to select those options from API.


VBScript:

Sub LaunchAndRunUFT()
    Dim oUFT, appUFTResults, uftTestParamDef, uftTestParams, oFSO
    
    'Launch UFT
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oUFT = CreateObject("QuickTest.Application")
    Set appUFTResults = CreateObject("QuickTest.RunResultsOptions")
    oUFT.Launch
    oUFT.Visible = True
    
    'Connect to ALM
    If Not oUFT.TDConnection.IsConnected Then
        oUFT.TDConnection.Connect "ALM URL", "ALM_DOMAIN", "ALM_PROJECT", "ALM_UserID", "ALM_Password", False 'True if it's encrypted password
    End If
    
    'Open the test
    oUFT.Open "[ALM] Subject\MYTestInALM", True
    
    'Set params and run
    Set uftTestParamDef = oUFT.Test.ParameterDefinitions
    Set uftTestParams = uftTestParamDef.GetParameters()
    uftTestParams.Item("MyTestParameter").Value = "ValueToPass" 'if you want to pass Test Parameters

    'appUFTResults.ResultsLocation = "" 'if you are storing in Windows File System
    appUFTResults.TDTestSet = "Root\TESTSET_FOLDER\TEST_SET"
    appUFTResults.TDTestInstance = 1
    oUFT.Test.Run appUFTResults, True, uftTestParams
    
    'Close
    oUFT.TDConnection.Disconnect
    oUFT.Quit
End Sub

.Net (C#):

public void LaunchAndRunUFT()
        {
            //Launch UFT
            System.Type uftType = System.Type.GetTypeFromProgID("QuickTest.Application");
            dynamic oUFT = System.Activator.CreateInstance(uftType);
            oUFT.Visible = true;
            oUFT.Launch();

            System.Type uftResultType = System.Type.GetTypeFromProgID("QuickTest.RunResultsOptions");
            dynamic oUFTResults = System.Activator.CreateInstance(uftResultType);

            //Connect to ALM
            if (!oUFT.TDConnection.IsConnected)
            {
                oUFT.TDConnection.Connect("ALM URL", "ALM_DOMAIN", "ALM_PROJECT", "ALM_UserID", "ALM_Password", false);
            }

            //Open the test
            oUFT.Open(@"[ALM] Subject\MyTestInALM", true, false);

            //Set params and run
            dynamic oUFTTestParamDef = oUFT.Test.ParameterDefinitions;
            dynamic oUFTTestParams = oUFTTestParamDef.GetParameters();

            oUFTTestParams["MyTestParameter"].Value = "ValueToPass";

            //appUFTResults.ResultsLocation = ""
            oUFTResults.TDTestSet = @"Root\TESTSET_FOLDER\TEST_SET";
            oUFTResults.TDTestInstance = 1;
            oUFT.Test.Run(oUFTResults, true, oUFTTestParams);

            //Close
            oUFT.TDConnection.Disconnect();
            oUFT.Quit();

        }