Partager via


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 :

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.