Создание тестов на языках сценариев
Помимо C++ и C#, TAEF поддерживает создание тестов на языках сценариев.
Компоненты скриптов создаются с помощью любого языка сценариев, поддерживающего интерфейсы com-скриптов Майкрософт. Языки сценариев, поддерживающие эти интерфейсы, включают JScript, Microsoft Visual Basic Scripting Edition (VBScript), PERLScript, PScript, Ruby и Python.
Текущие ограничения разработки тестов скриптов
Windows поддерживает только JScript и VBScript.
Формат тестового файла скрипта
Для тестов языка сценариев TAEF использует немного измененный формат файла Windows Script Components. В следующих примерах показан тестовый файл, содержащий тестовые классы VBScript и 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>
Этот пример представляет собой XML-файл и начинается с обычного заголовка XML:
<?xml version="1.0" ?>
Вы настраиваете параметры отладки для файла, задав атрибуты ошибки и отладки:
<?component error="true" debug="true"?>
- Присвойте ошибкезначение true , чтобы отобразить подробные сообщения об ошибках синтаксиса или времени выполнения в компоненте скрипта.
- Установите для отладкизначение true , чтобы включить отладку. Если отладка не включена, вы не сможете запустить отладчик скриптов для скрипта (например, с ключевое слово отладки в коде JScript).
Элемент <пакета> заключает определения тестового класса в WSC-файл . После этого элемента можно вставить метаданные уровня модуля, добавив элементы ModuleProperty :
<ModuleProperty name = "Owner" value = "Someone"/>
Элемент ModuleProperty должен содержать атрибуты name и value .
Элемент Component запускает объявление для тестового класса скрипта. Этот элемент всегда должен иметь атрибут id , который имеет имя класса.
После элемента Component можно вставить метаданные уровня класса с помощью элемента TestClassProperty . Как и в случае с элементом ModuleProperty , он должен иметь атрибуты имени и значения .
На этом этапе можно также создавать объекты и определять ссылки на объекты . Дополнительные сведения см. в разделе Другие компоненты . Строки 15, 18, 49 и 52 в примере XML показывают, как ссылаться на WEX и инициализировать его. Объект Logger.Log .
>Открытый< элемент содержит объявления метода теста модуля тестового скрипта. Метод теста объявляется путем указания имени метода теста в атрибуте <name элемента method>. Вы также можете добавить свойство метода теста в <элемент method> . Как и в случае со свойствами на других уровнях, он не является обязательным. Однако при добавлении необходимо включить атрибуты имени и значения .
Элемент <script> определяет язык тестового скрипта и заключает в себя реализацию методов тестирования.
!<[ Раздел CDATA[]]> содержит фактическую реализацию тестов — код, написанный на языке сценариев. В этом разделе вы реализуете методы тестирования, объявленные в <разделе public></public> .