Condividi tramite


Creazione di test nei linguaggi di scripting

Oltre a C++ e C#, TAEF supporta la creazione di test nei linguaggi di scripting.

I componenti di script vengono creati usando qualsiasi linguaggio di scripting che supporta le interfacce di scripting COM Microsoft. I linguaggi di script che supportano queste interfacce includono JScript, Microsoft Visual Basic Scripting Edition (VBScript), PERLScript, PScript, Ruby e Python.

Limitazioni correnti della creazione di test di script

Windows supporta solo JScript e VBScript.

Formato file di test script

Per i test del linguaggio di script, TAEF usa un formato di file Windows Script Components leggermente modificato. Gli esempi seguenti illustrano un file di test che contiene classi di test VBScript e 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>

Questo esempio è un file XML e inizia con un'intestazione XML normale:

<?xml version="1.0" ?>

Per configurare le impostazioni di debug per il file, impostare l'errore e il debug degli attributi:

<?component error="true" debug="true"?>
  • Impostare l'erroresu true per visualizzare messaggi di errore dettagliati per errori di sintassi o di runtime nel componente script.
  • Impostare debugsu true per abilitare il debug. Se il debug non è abilitato, non è possibile avviare il debugger di script per uno script, ad esempio con la parola chiave di debug all'interno del codice JScript.

L'elemento <del pacchetto> racchiude le definizioni di classe di test in un file con estensione wsc . Dopo questo elemento, è possibile inserire metadati a livello di modulo aggiungendo gli elementi ModuleProperty :

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

L'elemento ModuleProperty deve includere gli attributi nome e valore .

L'elemento Component avvia la dichiarazione per la classe di test dello script. Questo elemento deve avere sempre un attributo ID impostato sul nome della classe.

Dopo l'elemento Component , è possibile inserire i metadati a livello di classe usando l'elemento TestClassProperty . Come per l'elemento ModuleProperty , deve avere gli attributi nome e valore .

A questo punto, è anche possibile creare oggetti e definire riferimenti agli oggetti . Per altre informazioni, vedere la sezione Altri componenti . Le righe 15, 18, 49 e 52 nell'esempio XML mostrano come fare riferimento e inizializzare wex. Oggetto Logger.Log .

L'elemento <pubblico> racchiude le dichiarazioni del metodo di test del modulo di script di test. Per dichiarare un metodo di test, specificare il nome del metodo di test nell'attributo name di un elemento del <metodo> . È anche possibile aggiungere la proprietà del metodo di test all'interno dell'elemento del <metodo> . Come per le proprietà ad altri livelli, non è obbligatorio. Tuttavia, se lo si aggiunge, è necessario includere gli attributi nome e valore .

L'elemento <script> identifica il linguaggio di script di test e racchiude l'implementazione dei metodi di test.

!<[ La sezione CDATA[]]> contiene l'implementazione effettiva dei test, ovvero il codice scritto nel linguaggio di scripting. In questa sezione vengono implementati i metodi di test dichiarati nella <sezione pubblica></pubblica> .