Compartir a través de


Creación de pruebas en lenguajes de scripting

Además de C++ y C#, TAEF admite la creación de pruebas en lenguajes de scripting.

Puede crear componentes de script mediante cualquier lenguaje de scripting que admita las interfaces de scripting com de Microsoft. Los lenguajes de script que admiten estas interfaces incluyen JScript, Microsoft Visual Basic Scripting Edition (VBScript), PERLScript, PScript, Ruby y Python.

Limitaciones actuales de la creación de pruebas de script

De fábrica, Windows solo admite JScript y VBScript.

Formato de archivo de prueba de script

Para las pruebas de lenguaje de script, TAEF usa un formato de archivo Windows Script Components ligeramente modificado. En los ejemplos siguientes se muestra un archivo de prueba que contiene clases de prueba vbScript y JScript.

1   <?xml version="1.0" ?>
2
3   <!-- Debugging helpers -->
4   <!-- error    Set this to true to display detailed error messages for syntax or run-time errors in the script component.-->
5   <!-- debug    Set this to true to enable debugging. If this debugging is not enabled, you cannot launch the script debugger for a script -->
6   <?component error="true" debug="true"?>
7
8   <package>
9       <!-- Test module metadata -->
10      <ModuleProperty name="Owner" value="Someone"/>
11
12      <!-- Define a test class -->
13      <component id="VBSampleTests">
14          <!-- define and instantiate a logger -->
15          <object id="Log" progid="WEX.Logger.Log" />
16  
17          <!-- include a reference to the logger so you could use the constants defined in logger library -->
18          <reference guid="e65ef678-a232-42a7-8a36-63108d719f31" version="1.0"/>
19
20          <!-- Test class metadata -->
21          <TestClassProperty name="DocumentationUrl" value="http://shelltestkb/"/>
22
23          <public>
24              <!-- Define a test method with metadata -->
25              <method name="TestOne">
26                  <!-- Test method metadata -->
27                  <TestMethodProperty name="Priority" value="1"/>
28              </method>
29  
30              <!-- Define a test method without metadata -->
31              <method name="TestTwo"/>
32         </public>
33
34          <script language="VBScript">
35              <![CDATA[
36                  Function TestOne()
37                      Log.Comment("Calling TestOne")
38                  End Function
39
40                  Function TestTwo()
41                      Log.Comment("Calling TestTwo")
42                  End Function
43              ]] >
44          </script>
45      </component>
46
47      <!-- Define another test class -->
48      <component id="JScriptSampleTests">
49          <object id="Log" progid="WEX.Logger.Log" />
50
51          <!-- need reference to use logger constants -->
52          <reference guid="e65ef678-a232-42a7-8a36-63108d719f31" version="1.0"/>
53
54          <public>
55              <!-- Test setup and cleanup methods are declared using corresponding type = '' attributes -->
56              <method name="ClassSetup" type="TestClassSetup"/>
57              <method name="ClassCleanup" type="TestClassCleanup"/>
58              <method name="MethodSetup"  type="TestMethodSetup"/>
59              <method name="MethodCleanup" type="TestMethodCleanup"/>
60
61              <method name="TestOne"/>
62              <method name="TestTwo"/>
63          </public>
64
65          <!-- Setup and Cleanup methods return false on failure -->
66          <script language="JScript">
67              <![CDATA[
68                  function ClassSetup()
69                  {
70                      Log.Comment("Calling class setup");
71                      return true;
72                  }
73
74                  function ClassCleanup()
75                  {
76                      Log.Comment("Calling class cleanup");
77                      return true;
78                  }
79
80                  function MethodSetup()
81                  {
82                      Log.Comment("Calling method setup");
83                      return true;
84                  }
85
86                  function MethodCleanup()
87                  {
88                      Log.Comment("Calling method cleanup");
89                      return true;
90                  }
91
92                  function TestOne()
93                  {
94                      Log.Comment("Calling TestOne");
95  
96                      // For the purpose of demonstration, declare the test failed
97                      Log.Result(TestResult_Failed);
98                  }
99
100                 function TestTwo()
101                 {
102                     Log.Comment("Calling TestTwo");
103                 }
104             ]] >
105         </script>
106     </component>
107 </package>

Este ejemplo es un archivo XML y comienza con un encabezado XML normal:

<?xml version="1.0" ?>

Para configurar los valores de depuración para el archivo, establezca el error y la depuración de los atributos:

<?component error="true" debug="true"?>
  • Establezca el error en true para mostrar mensajes de error detallados de sintaxis o errores en tiempo de ejecución en el componente de script.
  • Establezca depuración en true para habilitar la depuración. Si la depuración no está habilitada, no puede iniciar el depurador de scripts para un script (por ejemplo, con la palabra clave de depuración en código JScript).

El <elemento package> incluye definiciones de clase de prueba en un archivo .wsc . Después de este elemento, puede insertar metadatos de nivel de módulo agregando elementos ModuleProperty :

<ModuleProperty name = "Owner" value = "Someone"/>

El elemento ModuleProperty debe incluir los atributos name y value .

El elemento Component inicia la declaración de la clase de prueba de script. Este elemento siempre debe tener un atributo id establecido en el nombre de clase.

Después del elemento Component , puede insertar metadatos de nivel de clase mediante el elemento TestClassProperty . Al igual que con el elemento ModuleProperty , debe tener los atributos name y value .

En este momento, también puede crear objetos y definir referencias a los objetos . Consulte la sección Otros componentes para obtener más información. Las líneas 15, 18, 49 y 52 del ejemplo XML muestran cómo hacer referencia e inicializar wex. Objeto Logger.Log .

El <elemento público> incluye las declaraciones del método de prueba del módulo de script de prueba. Para declarar un método de prueba, especifique el nombre del método de prueba en el atributo name de un <elemento method> . También puede agregar la propiedad del método de prueba dentro del <elemento method> . Al igual que con las propiedades en otros niveles, no es obligatorio. Sin embargo, si lo agrega, debe incluir los atributos name y value .

El <elemento script> identifica el lenguaje de script de prueba y incluye la implementación de los métodos de prueba.

El <![ La sección CDATA[]]> contiene la implementación real de las pruebas: el código escrito en el lenguaje de scripting. En esta sección, implementará los métodos de prueba que declaró en la <sección public></public> .