Compartir a través de


Pruebas controladas por datos en lenguajes de scripting

Para comprender esta sección, debe estar familiarizado con cómo crear pruebas en lenguajes de scripting. En esta sección no se describen los detalles de los distintos enfoques de pruebas controladas por datos de TAEF. Para obtener información general rápida, revise las diferentes construcciones de pruebas controladas por datos de TAEF:

Incluso puede optar por tener una combinación de orígenes de datos si tiene uno o varios orígenes de datos de cualquiera de los anteriores. Consulte Especificar varios orígenes de datos para obtener más información.

Especificación del origen de datos en el lenguaje de scripting

Las pruebas controladas por datos en TAEF permiten especificar dataSource en el nivel de clase o prueba. En una clase controlada por datos, los datos están disponibles para la configuración, la limpieza y todos los métodos de prueba de la clase . El parámetro DataSource es la información que indica dónde se recuperarán los datos. En el caso de las pruebas controladas por datos basadas en tablas, este valor incluye la ruta de acceso relativa al archivo XML y el TableId en el archivo XML donde se encuentran los datos. Consulte los vínculos enumerados anteriormente para obtener más detalles.

En el ejemplo siguiente se muestra cómo especificar la propiedad DataSource .

1   <?xml version="1.0" ?>
2   <?component error="true" debug="true"?>
3   <package>
4       <component id="VBSampleTests">
5           <object id="Log" progid="WEX.Logger.Log" />
6           <object id="TestData" progid="Te.Common.TestData" />
7
8           <public>
9               <method name="TestOne">
10                  <TestMethodProperty name="DataSource" value="WMI:SELECT Label, Caption FROM Win32_Volume"/>
11              </method>
12
13              <method name="TestTwo">
14                  <TestMethodProperty name="DataSource" value="Table:ScriptExampleTable.xml#MyTable;WMI:SELECT Label, Caption FROM Win32_Volume"/>
15              </method>
16          </public>
17
18          <script language="VBScript">
19              <![CDATA[
20                  Function TestOne()
21                      dim caption
22                      caption = "NoCaption"
23                      Log.Comment("Caption is " + caption)
24
25                      If TestData.Contains("Caption") Then
26                      caption = TestData.GetValue("Caption")
27                      End If
28                      Log.Comment("Caption is " + caption)
29                  End Function
30
31                  Function TestTwo()
32                      Log.Comment("Calling TestTwo")
33                      dim caption
34                      caption = "NoCaption"
35                      Log.Comment("Caption is " + caption)
36
37                      If TestData.Contains("Caption") Then
38                      caption = TestData.GetValue("Caption")
39                      End If
40                      Log.Comment("Caption is " + caption)
41
42                      dim size
43                      If TestData.Contains("Size") Then
44                      size = TestData.GetValue("Size")
45                      End If
46                      Log.Comment("Size is " + CStr(size))
47
48                      dim transparency
49                      If TestData.Contains("Transparency") Then
50                      transparency = TestData.GetValue("Transparency")
51                      End If
52                      Log.Comment("Transparency is " + CStr(transparency))
53                  End Function
54              ]] >
55          </script>
56      </component>
57
58      <component id="JScriptSampleTests">
59          <object id="Log" progid="WEX.Logger.Log" />
60          <object id="TestData" progid="Te.Common.TestData" />
61
62          <TestClassProperty name="DataSource" value="Table:ScriptExampleTable.xml#MyTable"/>
63
64          <public>
65              <method name="ClassSetup" type="TestClassSetup"/>
66              <method name="ClassCleanup" type="TestClassCleanup"/>
67              <method name="MethodSetup"  type="TestMethodSetup"/>
68              <method name="MethodCleanup" type="TestMethodCleanup"/>
69
70              <method name="TestOne"/>
71              <method name="TestTwo">
72                  <TestMethodProperty name="DataSource" value="WMI:SELECT Label, Caption FROM Win32_Volume"/>
73              </method>
74          </public>
75
76          <script language="JScript">
77              <![CDATA[
78                  function ClassSetup()
79                  {
80                      Log.Comment("Calling class setup");
81                      var size;
82                      if(TestData.Contains("Size"))
83                      {
84                          size = TestData.GetValue("Size");
85                      }
86                      Log.Comment("Size is " + size);
87  
88                      var transparency;
89                      if(TestData.Contains("Transparency"))
90                      {
91                          transparency = TestData.GetValue("Transparency");
92                      }
93                      Log.Comment("Transparency is " + transparency);
94                  }
95
96                  function ClassCleanup()
97                  {
98                      Log.Comment("Calling class cleanup");
99                      return true;
100                 }
101
102                 function MethodSetup()
103                 {
104                     Log.Comment("Calling method setup");
105                     var size;
106                     if(TestData.Contains("Size"))
107                     {
108                         size = TestData.GetValue("Size");
109                     }
110                     Log.Comment("Size is " + size);
111
112                     var transparency;
113                     if(TestData.Contains("Transparency"))
114                     {
115                         transparency = TestData.GetValue("Transparency");
116                     }
117                     Log.Comment("Transparency is " + transparency);
118                     return true;
119                 }
120
121                 function MethodCleanup()
122                 {
123                     Log.Comment("Calling method cleanup");
124                     return true;
125                 }
126
127                 function TestOne()
128                 {
129                     Log.Comment("Calling TestOne");
130                     var size;
131                     if(TestData.Contains("Size"))
132                     {
133                         size = TestData.GetValue("Size");
134                     }
135                     Log.Comment("Size is " + size);
136
137                     var transparency;
138                     if(TestData.Contains("Transparency"))
139                     {
140                         transparency = TestData.GetValue("Transparency");
141                     }
142                     Log.Comment("Transparency is " + transparency);
143                 }
144
145                 function TestTwo()
146                 {
147                     Log.Comment("Calling TestTwo");
148                     var caption = "NoCaption";
149                     Log.Comment("Initial caption: " + caption);
150
151                     if(TestData.Contains("Caption"))
152                     {
153                         caption = TestData.GetValue("Caption");
154                     }
155                     Log.Comment("Caption is " + caption);
156
157                     var size;
158                     if(TestData.Contains("Size"))
159                     {
160                         size = TestData.GetValue("Size");
161                     }
162                     Log.Comment("Size is " + size);
163
164                     var transparency;
165                     if(TestData.Contains("Transparency"))
166                     {
167                         transparency = TestData.GetValue("Transparency");
168                     }
169                     Log.Comment("Transparency is " + transparency);
170                 }
171             ]] >
172         </script>
173     </component>
174 </package>

En el ejemplo anterior, las líneas 6 y 60 declaran y crean instancias de un objeto TestData que permite el acceso a los datos de las pruebas controladas por datos.

Las <etiquetas TestMethodProperty> y <TestClassProperty> son líneas que definen DataSource para la prueba o clase. En VBSampleTests, TestOne tiene una consulta WMI como dataSource. La etiqueta de parámetros y los subtítulo están disponibles para los métodos de configuración, limpieza y prueba de TestOne. En la misma clase, TestTwo tiene varios orígenes de datos definidos. El primero es un DataSource basado en tabla y el segundo es el mismo datasource basado en WMI que TestOne.

TAEF genera una expansión combinatoria de los conjuntos de parámetros para cada una de las propiedades dataSource . Hay un conjunto de parámetros disponible para cada invocación de método de prueba. Si la consulta WMI devuelve cuatro conjuntos de resultados (Win32_Volume) y hay tres filas en el origen de datos basado en tabla, TestOne se ejecutará cuatro veces, una vez con cada Win32_Volume que devuelve la consulta WMI. Por otro lado, TestTwo ejecuta 12 (4 X 3) veces para cada combinación de Win32_Volume datos y Fila que especifica la tabla. Los datos también están disponibles para los métodos de instalación y limpieza asociados.

En JScriptSampleTests, puede ver un ejemplo de una clase controlada por datos. Dado que el ejemplo especifica DataSource en el nivel de clase, los datos están disponibles para todos los métodos de prueba, así como para los métodos de configuración y limpieza de nivel de prueba y clase. Dado que TestTwo es una prueba controlada por datos dentro de una clase controlada por datos, los datos de DataSource en el nivel de clase, así como los del nivel de prueba están disponibles para TestTwo.

Tipos de datos disponibles para pruebas de script

Los siguientes tipos de parámetros están disponibles para los lenguajes de scripting. Estos son los tipos que se pueden especificar en las pruebas basadas en datos basadas en tablas. El tipo de parámetro predeterminado es String o BSTR (que representa VT_BSTR).

En la sección Tipos de parámetros de DataSource basados en tablas se muestra cómo ver los tipos de parámetros disponibles (en código nativo y administrado) al crear pruebas en un lenguaje de scripting.

Ejecución de scripts controlados por datos

La opción /listproperties enumera no solo los metadatos, sino también los datos que están disponibles para cada invocación de la prueba. (Al ejecutar la opción /listproperties en todo el archivo DLL, se deja como ejercicio para el lector). En el ejemplo siguiente se selecciona la invocación de TestOne de VBSampleTests mediante el lenguaje de consulta de selección :

f:\spartadev.binaries.x86chk\WexTest\CuE\TestExecution>te Examples\DataDrivenTest.wsc /listproperties /name:VBSampleTests::TestOne*

Test Authoring and Execution Framework v.R10 Build 6.1.6939.0 For x86

        f:\spartadev.binaries.x86chk\WexTest\CuE\TestExecution\Examples\DataDrivenTest.wsc
            VBSampleTests
                VBSampleTests::TestOne#0
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = C:\
                        Data[Label] =

                VBSampleTests::TestOne#1
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = D:\
                        Data[Label] = New Volume

                VBSampleTests::TestOne#2
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = F:\
                        Data[Label] = New Volume

                VBSampleTests::TestOne#3
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = E:\
                        Data[Label] = New Volume

                VBSampleTests::TestOne#4
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = G:\
                        Data[Label] = New Volume

                VBSampleTests::TestOne#5
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = H:\
                        Data[Label] = New Volume

                VBSampleTests::TestOne#6
                        Property[DataSource] = WMI:SELECT Label, Caption FROM Win32_Volume

                        Data[Caption] = K:\
                        Data[Label] =

La opción /listproperties muestra que TAEF invocó el método de prueba VBSampleTests::TestOne 7 veces, una vez para cada Win32_Volume. Para cada invocación, TAEF anexa un índice implícito al método de prueba para distinguir cada invocación. También puede ver los datos y metadatos que están disponibles para cada invocación del método de prueba.

Con la información de la opción /listproperties , puede aplicar una consulta de selección basada en el valor de datos o el valor de índice para obtener un control más preciso de las invocaciones de prueba que se van a ejecutar. En el ejemplo siguiente se muestra cómo ejecutar solo la invocación en la que el subtítulo es E:\:

te Examples\DataDrivenTest.wsc /select:"@Name='VBSampleTests::TestOne*' and @Data:Caption='E:\'"

El siguiente comando usa el índice para seleccionar la misma prueba:

te Examples\DataDrivenTest.wsc /select:"@Name='VBSampleTests::TestOne*' and @Data:Index=3"

El uso de pruebas basadas en PICT y basadas en datos ligeros en una prueba de script se deja como ejercicio para el lector.