Tests pilotés par les données dans les langages de script
Pour comprendre cette section, vous devez être familiarisé avec la création de tests dans les langages de script. Cette section ne décrit pas les détails des différentes approches de test basées sur les données TAEF. Pour une vue d’ensemble rapide, passez en revue les différentes constructions de test pilotées par les données TAEF :
- Tests basés sur des données basées sur des tables
- Test basé sur les données WMI
- Test basé sur les données PICT
- Tests pilotés par des données légères
Vous pouvez même choisir d’avoir une combinaison de sources de données en ayant une ou plusieurs sources de données de l’une des sources ci-dessus. Pour plus d’informations, consultez Spécification de plusieurs sources de données .
Spécification de la source de données dans le langage de script
Les tests pilotés par les données dans TAEF vous permettent de spécifier le DataSource au niveau de la classe ou du test. Dans une classe pilotée par les données, les données sont disponibles pour la configuration de la classe et de la méthode de test, le nettoyage et toutes les méthodes de test de la classe. Le paramètre DataSource est les informations qui indiquent d’où les données seront récupérées. Dans le cas de tests basés sur des données basées sur une table, cette valeur inclut le chemin d’accès relatif au fichier XML et le TableId dans le fichier XML où se trouvent les données. Pour plus d’informations, consultez les liens répertoriés ci-dessus.
L’exemple suivant montre comment spécifier la propriété 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>
Dans l’exemple ci-dessus, les lignes 6 et 60 déclarent et instancient un objet TestData qui permet d’accéder aux données pour les tests pilotés par les données.
Les <balises TestMethodProperty> et <TestClassProperty> sont des lignes qui définissent DataSource pour le test ou la classe. Dans VBSampleTests, TestOne a une requête WMI comme DataSource. L’étiquette des paramètres et les légende sont disponibles pour les méthodes d’installation, de nettoyage et de test de TestOne. Dans la même classe, TestTwo a défini plusieurs sources de données . Le premier est un DataSource basé sur table, et le second est le même DataSource basé sur WMI que TestOne.
TAEF génère une extension combinatoire des jeux de paramètres pour chacune des propriétés DataSource . Un jeu de paramètres est disponible pour chaque appel de méthode de test. Si la requête WMI retourne quatre jeux de résultats (Win32_Volume) et qu’il existe trois lignes dans le DataSource basé sur une table, TestOne s’exécute quatre fois , une fois pour chaque Win32_Volume que la requête WMI retourne. D’autre part, TestTwo exécute 12 (4 x 3) fois pour chaque combinaison de données Win32_Volume et row que la table spécifie. Les données sont également disponibles pour les méthodes d’installation et de nettoyage associées.
Dans JScriptSampleTests, vous pouvez voir un exemple de classe pilotée par les données. Étant donné que l’exemple spécifie DataSource au niveau de la classe, les données sont disponibles pour toutes les méthodes de test, ainsi que pour les méthodes de configuration et de nettoyage au niveau du test et de la classe. Étant donné que TestTwo est un test piloté par les données au sein d’une classe pilotée par les données, les données du DataSource au niveau de la classe ainsi que celles du niveau de test sont disponibles pour TestTwo.
Types de données disponibles pour les tests de script
Les types de paramètres suivants sont disponibles pour les langages de script. Il s’agit des types que vous pouvez spécifier dans les tests basés sur les données basés sur des tables. Le type de paramètre par défaut est String ou BSTR (représentant VT_BSTR).
La section Types de paramètres dans DataSource basé sur table montre comment afficher les types de paramètres disponibles (en code natif et managé) lors de la création de tests dans un langage de script.
Exécution de scripts pilotés par les données
L’option /listproperties répertorie non seulement les métadonnées, mais également les données disponibles pour chaque appel du test. (L’exécution de l’option /listproperties sur l’ensemble de la dll est laissée comme un exercice pour le lecteur.) L’exemple suivant sélectionne l’appel de TestOne à partir de VBSampleTests à l’aide du langage de requête de sélection :
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] =
L’option /listproperties indique que TAEF a appelé la méthode de test VBSampleTests::TestOne 7 fois , une fois pour chaque Win32_Volume. Pour chaque appel, TAEF ajoute un index implicite à la méthode de test pour distinguer chaque appel. Vous pouvez également voir les données et les métadonnées disponibles pour chaque appel de la méthode de test.
À l’aide des informations de l’option /listproperties , vous pouvez appliquer une requête de sélection basée sur la valeur de données ou la valeur d’index pour contrôler plus finement les appels de test à exécuter. L’exemple suivant montre comment exécuter uniquement l’appel où le légende est E:\:
te Examples\DataDrivenTest.wsc /select:"@Name='VBSampleTests::TestOne*' and @Data:Caption='E:\'"
La commande suivante utilise l’index pour sélectionner le même test :
te Examples\DataDrivenTest.wsc /select:"@Name='VBSampleTests::TestOne*' and @Data:Index=3"
L’utilisation de tests basés sur PICT et basés sur des données légères dans un test de script est laissée comme un exercice pour le lecteur.