Création de tests dans les langages de script
En plus de C++ et C#, TAEF prend en charge la création de tests dans les langages de script.
Vous créez des composants de script à l’aide d’un langage de script qui prend en charge les interfaces microsoft COM Scripting. Les langages de script qui prennent en charge ces interfaces incluent JScript, Microsoft Visual Basic Scripting Edition (VBScript), PERLScript, PScript, Ruby et Python.
Limitations actuelles de la création de tests de script
Prête à l’emploi, Windows prend uniquement en charge JScript et VBScript.
Format de fichier de test de script
Pour les tests de langage de script, TAEF utilise un format de fichier Windows Script Components légèrement modifié. Les exemples suivants montrent un fichier de test qui contient des classes de test VBScript et 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>
Cet exemple est un fichier XML qui commence par un en-tête XML ordinaire :
<?xml version="1.0" ?>
Vous configurez les paramètres de débogage pour votre fichier en définissant l’erreur et le débogage des attributs :
<?component error="true" debug="true"?>
- Définissez error sur true pour afficher des messages d’erreur détaillés pour les erreurs de syntaxe ou d’exécution dans le composant de script.
- Définissez debug sur true pour activer le débogage. Si le débogage n’est pas activé, vous ne pouvez pas lancer le débogueur de script pour un script (par exemple, avec le débogage mot clé dans le code JScript).
L’élément <package> contient des définitions de classe de test dans un fichier .wsc . Après cet élément, vous pouvez insérer des métadonnées au niveau du module en ajoutant des éléments ModuleProperty :
<ModuleProperty name = "Owner" value = "Someone"/>
L’élément ModuleProperty doit inclure les attributs name et value.
L’élément Component démarre la déclaration pour la classe de test de script. Cet élément doit toujours avoir un attribut id défini sur le nom de la classe.
Après l’élément Component , vous pouvez insérer des métadonnées au niveau de la classe à l’aide de l’élément TestClassProperty . Comme avec l’élément ModuleProperty , il doit avoir les attributs name et value .
À ce stade, vous pouvez également créer des objets et définir des références aux objets. Pour plus d’informations, consultez la section Autres composants . Les lignes 15, 18, 49 et 52 de l’exemple XML montrent comment référencer et initialiser le WEX. Objet Logger.Log .
L’élément <public> entoure les déclarations de méthode de test du module de script de test. Vous déclarez une méthode de test en spécifiant le nom de la méthode de test dans l’attribut name d’un <élément de méthode> . Vous pouvez également ajouter la propriété de méthode de test à l’intérieur de l’élément <method> . Comme pour les propriétés à d’autres niveaux, il n’est pas obligatoire. Toutefois, si vous l’ajoutez, vous devez inclure les attributs nom et valeur .
L’élément< script> identifie le langage de script de test et entoure l’implémentation des méthodes de test.
Le <![ La section CDATA[]]> contient l’implémentation réelle des tests : le code écrit dans le langage de script. Dans cette section, vous implémentez les méthodes de test que vous avez déclarées dans la <section public></public> .