ChildTestItem Property

Applies to TestComplete 14.0, last modified on January 23, 2019

Description

Projects’s test items can be organized in a tree-like structure. A test item can have a number of child items. The ChildTestItem property returns the child test item specified by its index.

Declaration

ProjectTestItem_COMAccessObj.ChildTestItem(Index)

Read-Only Property A ProjectTestItem_COMAccess object
ProjectTestItem_COMAccessObj An expression, variable or parameter that specifies a reference to a ProjectTestItem_COMAccess object
Index [in]    Required    Integer    

Applies To

The property is applied to the following object:

Parameters

The property has the following parameter:

Index

Specifies the index (zero-based) of the desired child test item. The total number of items is specified by the ChildCount property.

Property Value

An integer value that specifies the number of child items of the given test item.

Example

The following example demonstrates how to access the project’s test item collection from a Visual Basic or C# application. The sample code uses the ProjectTests_COMAccess object’s properties to obtain the ProjectTestItem_COMAccess objects that provide a program interface to the project test items. The example displays a tree structure corresponding to the project’s test item collection structure.

Visual Basic

Sub Test()

  Dim TestCompleteApp As TestCompleteApplication
  Dim IntegrationObject As ItcIntegration
  Dim LastResult As ItcIntegrationResultDescription

  ' Creates the application object
  Set TestCompleteApp = CreateObject("TestComplete.TestCompleteApplication.14")

  ' Obtains the integration object
  Set IntegrationObject = TestCompleteApp.Integration

  ' Opens the project
  IntegrationObject.OpenProjectSuite "C:\Work Folder\TestSuite\TestSuite.pjs"

  ' Checks whether the project suite was opened
  ' If the project suite cannot be opened, closes TestComplete
  If Not IntegrationObject.IsProjectSuiteOpened Then
    MsgBox "The project suite was not opened"
    ' Closes TestComplete
    TestCompleteApp.Quit
    Exit Sub
  End If

  ' Needed to process errors
  Err.Clear
  On Error GoTo Err_Label

    ' Obtains the ProjectTests_COMAccess object
    ' That provides a program interface to the project's test item collection
    Set ProjectItems = IntegrationObject.TestSuite("TestProject")

    ' Determines the number of test items the project contains
    ItemsCount = ProjectItems.Count

    ' Iterates through the project’s test items
    ' And displays them in the tree view
    For i = 0 To ItemsCount - 1
      Set TestItem = ProjectItems.TestItem(i)
      Call PopulateItem(TestItem)
    Next

  Err_Label:
    ' Processes errors
    If Err.Number <> 0 Then
      MsgBox Err.Description, vbCritical, "Error"
    End If

  ' Closes TestComplete
  TestCompleteApp.Quit

End Sub

Public Sub PopulateItem(ATestItem)

  Dim ANode As Node

  ' Obtains the parent item for the current test item
  Set PTestItem = ATestItem.ParentTestItem

  If Not PTestItem Is Nothing Then
    Set ANode = MainForm.ItemsTree.Nodes.Add(PTestItem.Name, tvwChild, ATestItem.Name, ATestItem.Name)
  Else
    Set ANode = MainForm.ItemsTree.Nodes.Add(, , ATestItem.Name, ATestItem.Name)
  End If

  ' Checks whether the test item is enabled
  If ATestItem.Enabled Then
    Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "Enabled: " & CStr(ATestItem.Enabled))
  End If

  ' Checks whether the test item is a group
  If ATestItem.IsGroup Then
    Set GNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "Is a group: True")
  Else
    ' Obtains the test item description
    Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "Description: " & ATestItem.Description)

    ' Obtains the maximum execution time for the test item
    Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "Timeout: " & CStr(ATestItem.Timeout))

    ' Defines how many times the test item will be executed
    Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "Count: " & CStr(ATestItem.Count))

    ' Obtains the test item’s StopOnError property
    StopOnError = ATestItem.StopOnError
    Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "On error: ")
    Select Case StopOnError
      Case 0
        TNode.Text = TNode.Text & "Continue running"
      Case 1
        TNode.Text = TNode.Text & "Stop project"
      Case 2
        TNode.Text = TNode.Text & "Stop test item"
      Case 3
        TNode.Text = TNode.Text & "Use project's On error property"
    End Select

    ' Obtains the test item’s StopOnException property
    StopOnException = ATestItem.StopOnException
    Set TNode = MainForm.ItemsTree.Nodes.Add(ATestItem.Name, tvwChild, , "On exception: ")
    Select Case StopOnError
      Case 0
        TNode.Text = TNode.Text & "Continue running"
      Case 1
        TNode.Text = TNode.Text & "Stop project"
      Case 2
        TNode.Text = TNode.Text & "Stop test item"
    End Select
  End If

  ' Checks whether the test item has child test items
  If ATestItem.ChildCount > 0 Then
    ' Iterates through the child items
    For i = 0 To ATestItem.ChildCount - 1
      Set CTestItem = ATestItem.ChildTestItem(i)
      Call PopulateItem(CTestItem)
    Next
  End If

End Sub

C#

using System.Runtime.InteropServices;
using TestComplete;



public partial class MainForm : Form
{
  public MainForm()
  {
    InitializeComponent();
  }

  private void btn_Connect_Click(object sender, EventArgs e)
  {
    const string TCProgID = "TestComplete.TestCompleteApplication.14";
    object TestCompleteObject = null;

    // Obtains access to TestComplete
    try
    {
      TestCompleteObject = Marshal.GetActiveObject(TCProgID);
    }
    catch
    {
      try
      {
        TestCompleteObject = Activator.CreateInstance(Type.GetTypeFromProgID(TCProgID));
      }
      catch
      {
      }
    }

    if (TestCompleteObject == null) return;

      // Obtains ITestCompleteCOMManager
      TestComplete.ITestCompleteCOMManager TestCompleteManager = (TestComplete.ITestCompleteCOMManager) TestCompleteObject;
      // Obtains the Integration object
      TestComplete.ItcIntegration IntegrationObject = TestCompleteManager.Integration;

      // We have a reference to the integration object
      // Now we can use its methods and properties to automate TestComplete

      // Loads the project suite
      IntegrationObject.OpenProjectSuite("C:\\Work Folder\\TestSuite\\TestSuite.pjs");

      // Checks whether the project suite was opened
      // If the project suite cannot be opened, closes TestComplete
      if (!IntegrationObject.IsProjectSuiteOpened())
      {
        System.Windows.Forms.MessageBox.Show("Could not open the project suite.");
        // Closes TestComplete
        TestCompleteManager.Quit();
        // Releases COM objects
        Marshal.ReleaseComObject(IntegrationObject);
        Marshal.ReleaseComObject(TestCompleteManager);
        Marshal.ReleaseComObject(TestCompleteObject);
        return;
      }

      try
      {
        // Obtains the ProjectTests_COMAccess object providing a program interface to the project’s test item collection
        object ObjProjectItems = IntegrationObject.get_TestSuite("TestProject");
        TestComplete.ItcProjectTests_COMAccess ProjectItems = (TestComplete.ItcProjectTests_COMAccess)ObjProjectItems;
        // Determines the number of test items the project contains
        int Count = ProjectItems.Count;

        TreeView ItemsTree = new TreeView();
        ItemsTree.CheckBoxes = true;
        ItemsTree.ShowNodeToolTips = true;
        ItemsTree.Size = new Size(400, 200);
        ItemsTree.Top = 12;
        ItemsTree.Left = 12;

        // Iterates through the project’s test items
        // And displays them in the tree view
        for (var i = 0; i < Count; i++)
        {
          TestComplete.ItcProjectTestItem_COMAccess TestItem = ProjectItems.get_TestItem(i);
          TreeNode TN = ProcessItem(TestItem);
          ItemsTree.Nodes.Add(TN);
        }
        this.Controls.Add(ItemsTree);

      }
      catch (System.Runtime.InteropServices.COMException ex)
      {
          System.Windows.Forms.MessageBox.Show("An exception occurred: " + ex.Message);
      }
      finally
      {
          // Closes TestComplete
          TestCompleteManager.Quit();
          // Releases COM objects
          Marshal.ReleaseComObject(IntegrationObject);
          Marshal.ReleaseComObject(TestCompleteManager);
          Marshal.ReleaseComObject(TestCompleteObject);
      }
    }
  }

  public TreeNode ProcessItem(TestComplete.ItcProjectTestItem_COMAccess ATestItem)
  {
    TreeNode ATreeNode = new TreeNode(ATestItem.Name);
    string ToolTipText;

    // Obtains the parent test item of the current test item
    // And checks whether the parent item and the current item are enabled
    TestComplete.ItcProjectTestItem_COMAccess PTestItem = ATestItem.ParentTestItem;
    if (((PTestItem != null) && (PTestItem.Enabled) && (ATestItem.Enabled)) || ((PTestItem == null) && (ATestItem.Enabled)) )
      ATreeNode.Checked = true;
    // Checks whether the current test item is a group
    if (ATestItem.IsGroup)
    {
      ToolTipText = "Is a Group";
    }
    else
    {
      // Obtains the test item description
      ToolTipText = "Description: " + ((String.IsNullOrEmpty(ATestItem.Description)) ? "not specified" : ATestItem.Description) + "\r\n";
      TestComplete.TC_TEST_ERROR_PROCEESING_VALUE StopOnError = ATestItem.StopOnError;
      // Obtains the test item’s StopOnError property
      ToolTipText += "On error: ";
      switch (StopOnError)
      {
        case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvNone:
          ToolTipText += "Continue running\r\n";
          break;
        case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvProject:
          ToolTipText += "Stop project\r\n";
          break;
        case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvTestItem:
          ToolTipText += "Stop test item\r\n";
          break;
        case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvProjectDefault:
          ToolTipText += "Use project's On error property\r\n";
          break;
      }
      // Obtains the test item’s StopOnexception property
      TestComplete.TC_TEST_ERROR_PROCEESING_VALUE StopOnException = ATestItem.StopOnException;
      ToolTipText += "On Exception: ";
      switch (StopOnException)
      {
        case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvNone:
          ToolTipText += "Continue running\r\n";
          break;
        case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvProject:
          ToolTipText += "Stop project\r\n";
          break;
        case TestComplete.TC_TEST_ERROR_PROCEESING_VALUE.epvTestItem:
          ToolTipText += "Stop test item\r\n";
          break;
      }

      // Defines how many times the test item will be executed
      ToolTipText += "Count: " + ATestItem.Count + "\r\n";
      // Obtains the maximum execution time for the test item
      ToolTipText += "Timeout: " + ATestItem.Timeout + "\r\n";
    }

    ATreeNode.ToolTipText = ToolTipText;
    // Obtains the number of the current test item’s child items
    int Count = ATestItem.ChildCount;
    // Iterates through the child items
    for (var i = 0; i < Count; i++)
    {
      TestComplete.ItcProjectTestItem_COMAccess CTestItem = ATestItem.get_ChildTestItem(i);
      TreeNode CTreeNode = ProcessItem(CTestItem);
      ATreeNode.Nodes.Add(CTreeNode);

    }

    return ATreeNode;

  }
}

See Also

Working With TestComplete via COM - Overview
ChildCount Property
ParentTestItem Property

Highlight search results