Repetición por artículos en un control de árbol utilizando el método GetTestData

En este tema se ofrece un ejemplo de utilización del método GetTestData de Functional Tester para acceder programáticamente a los valores de las ramas de un control de árbol.

El siguiente ejemplo es una prueba contra la aplicación Classics Java:

#Region " Script Header "
' Functional Test Script
' author Administrator
Imports Microsoft.VisualBasic
Imports Rational.Test.Ft
Imports Rational.Test.Ft.Object.Interfaces
Imports Rational.Test.Ft.Object.Interfaces.SAP
Imports Rational.Test.Ft.Object.Interfaces.Siebel
Imports Rational.Test.Ft.Script
Imports Rational.Test.Ft.Value
Imports Rational.Test.Ft.Vp
#End Region

Public Class GetTreeDataExample 
    Inherits GetTreeDataExampleHelper

    'Script Name   : GetTreeDataExample
    'Generated     : Jul 17, 2006 3:25:22 PM
    'Description   : Functional Test Script
    'Original Host : Windows XP x86 5.1 build 2600 Service Pack 2 

    'since  2006/07/17
    'author Administrator

    Public Function TestMain(ByVal args() As Object)
        ' Turn off Log Viewer for this example
        SetOption(IOptionName.BRING_UP_LOGVIEWER, False)

        'Start Classics Java Application
        StartApp("ClassicsJavaA")

        ' Wait for tree to appear
        Tree2().WaitForExistence()

        ' Display available test data types available from tree
        System.Console.WriteLine(String.Format("Available Tree Data Types: {0}", Tree2().GetTestDataTypes()))

        ' Declare variables for tree
        Dim CdTree As ITestDataTree
        Dim CdTreeNodes As ITestDataTreeNodes
        Dim CdTreeNode() As ITestDataTreeNode

        ' Variables to hold tree data
        CdTree = Tree2().GetTestData("tree")
        CdTreeNodes = CdTree.GetTreeNodes()
        CdTreeNode = CdTreeNodes.GetRootNodes()


        ' Print out total number of nodes
        System.Console.WriteLine("Tree Total Node Count: " + CdTreeNodes.GetNodeCount())
        System.Console.WriteLine("Tree Root Node Count : " + CdTreeNodes.GetRootNodeCount())

        ' Iterate through tree branches; this is a recursive method.

        Dim I As Integer

        For I = 0 To CdTreeNode.Length - 1
            ShowTree(CdTreeNode(I), 0)
        Next I

        ' Shut down Classics Java Application
        ClassicsJava(ANY, MAY_EXIT).Close()
    End Function

    Public Sub ShowTree(ByVal Node As ITestDataTreeNode, ByVal _
        Indent As Integer)
        ' Recursive method to print out tree nodes with proper
        ' indenting.

        ' Determine number of tabs to use - to properly indent tree
        Dim TabCount As Integer
        IIf(Indent < Tabs.Length(), TabCount = Indent, TabCount = Tabs.Length())

        ' Print out node name + number of children
        System.Console.WriteLine(Tabs.Substring(0, TabCount) + Node.GetNode() + " (" + Node.GetChildCount() + " Children)")

        ' Determine if node has children; recursively call this same
        ' method to print out child nodes.
        Dim Children() As ITestDataTreeNode = Node.GetChildren()
        Dim ChildCount As Integer

        IIf(ChildCount <> 0, ChildCount = Children.Length, ChildCount = 0)

        Dim I As Integer

        For I = 0 To ChildCount - 1
            ShowTree(Children(I), Indent + 1)
        Next I
    End Sub

    ' String of tabs used to indent tree view
    Const Tabs As String = _
    "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"

End Class

En la primera pantalla de esta aplicación encontrará un componente Java Swing JTree, con un listado de cinco compositores. El siguiente nivel inferior presenta un listado con los CD disponibles del compositor seleccionado. El código de este ejemplo extrae los valores de todas las ramas del árbol y los muestra en la ventana de la consola.

El primer paso para extraer los datos consiste en utilizar el método GetTestData para extraer los datos desde el control. Esto se efectúa con la sintaxis siguiente:

     Dim CdTree As ITestDataTree
     CdTree = Tree2().GetTestData("tree")

El paso siguiente consiste en crear una matriz que contenga todos los nodos del árbol. Esto se efectúa de la siguiente manera:

     Dim CdTreeNodes As ITestDataTreeNodes
     Dim CdTreeNode As ITestDataTreeNode()
 
     CdTreeNodes = CdTree.GetTreeNodes()
     CdTreeNode = CdTreeNodes.GetRootNodes()

Tenga en cuenta de que se trata de un proceso de dos pasos. Primero, debe utilizar el método GetTreeNodes para devolver un objeto TreeNodes. A continuación, puede llamar al método GetRootNodes para extraer una matriz de los nodos raíz para el árbol.

Con los tres nodos en cuestión, puede utilizar la recurrencia para recorrer cada nodo para determinar su valor y el número de hijos directos que contiene. Esto se realiza con el método recurrente ShowTree. Un método recurrente es un método que se llama a sí mismo y que constituye una forma eficiente de recorrer una estructura de árbol. Para extraer el valor del nodo se utiliza el método GetNode. Para extraer el número de hijos que contiene un nodo, se utiliza el método GetChildCount. En el ejemplo se efectúa con el siguiente código:

     System.Console.WriteLine(Tabs.Substring(0, TabCount) + Node.GetNode() + " (" + Node.GetChildCount() + " Children)")

Tenga en cuenta, que la codificación adicional que se suministra con el método ShowTree personalizado está previsto para habilitar una impresión formateada mediante tabuladores para indicar el sangrado del árbol.


Comentarios