Выбор
Тестовая платформа разработки и выполнения (TAEF) предоставляет механизм выборочного выполнения или пропускания определенных тестов на основе предоставленных вами сведений о метаданных. В следующем разделе рассматриваются различные примеры использования этого механизма выбора с TE.exe.
Вы можете запустить TE.exe из окна командной строки.
TE <test_binaries> [/select:<selection criteria>]
В этом разделе описывается параметр TE.exe /select:selection criteria . Дополнительные сведения о TE.exe см. в разделе TE.exe "Параметры команд".
Критерии выбора применяются глобально ко всем двоичным файлам теста, которые были упоминание в командной строке. Рассмотрим два test_binaries: Examples\CPP. SelectionCriteria1.Example.dll и Примеры\CPP. SelectionCriteria2.Example.dll . В следующем примере показаны свойства или метаданные, указанные на различных уровнях в этих test_binaries. Это также можно получить, указав параметр /listproperties в окне командной строки.
CPP.SelectionCriteria1.Example.dll (Owner="C1", Priority=3)
class11 (Owner="C2")
method111(Priority=1)
method112 (BackwardsCompatibility="Windows 2000")
class12
method121
CPP.SelectionCriteria2.Example.dll (Owner="WEX")
class21 (Owner="C1", Priority=2, BackwardsCompatibility="Windows XP")
method211 (Owner="C2")
class22 (Owner="U3")
method221
Другими словами, используя /listproperties для каждой из этих test_binaries отдельно, вы получаете следующее:
F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution>te Examples\CPP.SelectionCriteria1.Example.dll /listproperties
Test Authoring and Execution Framework v2.2 Build 6.1.7689.0 (release.091218-1251) for x86
F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution\Examples\CPP.SelectionCriteria1.Example.dll
Property[Owner] = C1
Property[Priority] = 3
WEX::TestExecution::Examples::Class11
Property[Owner] = C2
WEX::TestExecution::Examples::Class11::Method111
Property[Priority] = 1
WEX::TestExecution::Examples::Class11::Method112
Property[BackwardsCompatibility] = Windows2000
WEX::TestExecution::Examples::Class12
WEX::TestExecution::Examples::Class12::Method121
И:
F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution>te Examples\CPP.SelectionCriteria2.Example.dll /listproperties
Test Authoring and Execution Framework v2.2 Build 6.1.7689.0 (release.091218-1251) for x86
F:\fsd1.binaries.x86chk\WexTest\C1\TestExecution\Examples\CPP.SelectionCriteria2.Example.dll
Property[Owner] = WEX
WEX::TestExecution::Examples::Class21
Property[BackwardsCompatibility] = Windows XP
Property[Owner] = C1
Property[Priority] = 2
WEX::TestExecution::Examples::Class21::Method211
Property[Owner] = C2
WEX::TestExecution::Examples::Class22
Property[Owner] = U3
WEX::TestExecution::Examples::Class22::Method221
Важно отметить на этом этапе, что test_binaries перечислены вместе со своим полным путем, а имена классов перечислены как< "Namespace>::<ClassName>" в случае собственного test_binaries и пространства< имен>.<ClassName>" в случае управляемого test_binaries. Аналогичным образом имена методов тестирования перечислены как "<Namespace>::ClassName>::<<TestMethodName>" в случае собственного test_binaries и пространства< имен>.<ClassName>.<TestMethodName>" в случае управляемого test_binaries.
Другими словами, полное имя любого имени или функции — это то, что сохраняется в te. Это позволяет уникально различать любой метод. Например, если два класса имеют одно и то же имя метода, квалификация класса помогает уникально выбрать интересующий вас метод. В этом случае критерии выбора позволяют выполнять только те тесты, которые соответствуют вашим критериям в заданной test_binaries.
В приведенном выше примере скажите в Examples\Cpp.SelectionCriteria1.Example.dll, вы можете выбрать "Method111" любым из следующих критериев выбора:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='WEX::TestExecution::Examples::Class11::Method111'"
Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='*Class11::Method111'"
Te.exe Examples\CPP.SelectionCriteria1.Example.dll /select:"@Name='*Method111'"
Вы можете выполнить все тесты, помеченные как "Приоритет" менее 2, выполнив следующую команду:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority < 2"
Это будет выполняться только Examples\CPP. SelectionCriteria1.Example.dll — class11::method111 в нашем примере.
Если вы хотите выполнить все тесты в классе 11, можно использовать соответствующее свойство Name вместе с диким карта сопоставления, чтобы выбрать его следующим образом:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll
/select:"@Name='*::class11::*'"
При использовании критериев выбора следует учитывать некоторые аспекты:
- "and", "not" и "or" являются зарезервированными словами и являются нечувствительными к регистру.
- Имена и значения свойств метаданных не учитывают регистр, например "C2" в примере, будут соответствовать "c2" и "C2". Таким образом, если у вас есть одна функция с метаданными "свойство", а другая с свойством и критериями выбора ищется свойство, это будет соответствовать обоим из этих.
- Строковое значение в строке запроса выбора должно быть включено в одинарные кавычки. В строковом значении в запросе выбора "?" один дикий карта символ и "*" — 0 или более символов карта символов.
- При использовании кавычки в командной строке следует учитывать смарт-кавычки при копировании по запросу выбора. Если вы копируете запрос на выбор из электронной почты Outlook, возможно, у вас могут быть смарт-кавычки, и TAEF может быть не в состоянии проанализировать его. Вместо этого введите кавычки.
Давайте рассмотрим некоторые быстрые примеры сложных критериев выбора и их выполнение.
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=2"
Будет выполняться:
- Примеры\CPP. SelectionCriteria2.Example.dll - class21::method211
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=3"
Будет выполняться:
- Примеры\CPP. SelectionCriteria1.Example.dll - class11::method112
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='U3' oR @Priority=1"
Будет выполняться:
- Примеры\CPP. SelectionCriteria1.Example.dll — class11::method111
- Примеры\CPP. SelectionCriteria2.Example.dll — класс22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*)"
Будет выполнять все тесты, в которых не указано значение Обратной компиляции. (См. следующие элементы.)
- Примеры\CPP. SelectionCriteria1.Example.dll - class11::method111, class12::method121
- Примеры\CPP. SelectionCriteria2.Example.dll — класс22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C*'"
будет выполнять все тесты, в которых значение владельца начинается с "C" (без учета регистра). Таким образом, предыдущая команда будет выполнять все тесты в Examples\CPP. SelectionCriteria1.Example.dll и все тесты в Examples\CPP. SelectionCriteria2.Example.dll в классе21 (то есть метод211)
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*) OR (@Owner='C*' AND @BackwardsCompatibility='*XP*')"
будет выполнять все тесты, в которых не указана обратная компиляция или где имя владельца начинается с "C" и обратное значениеCompatibilty содержит XP. ОБРАТИТЕ ВНИМАНИЕ, как скобки "(" и "" используются для указания порядка приоритета.
В этом примере будет выборочно выполняться:
- Примеры\CPP. SelectionCriteria1.Example.dll - class11::method111, class12::method121,
- Примеры\CPP. SelectionCriteria2.Example.dll - class21::method211, class22::method21
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Owner='???'"
будут выполняться только тесты, имеющие значение владельца свойства, содержащее только 3 символа.
В нашем примере это будет соответствовать "C" и выполняться только:
- Примеры\CPP. SelectionCriteria1.Example.dll - class12::method121
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority>=1"
Примечание.
Это хороший пример использования "=", "><=", "", "" и "><, где значения свойств являются floatvalues.
В нашем примере будут выполняться все методы, кроме Examples\CPP. SelectionCriteria2.Example.dll — класс22::method21, где не указано кратность. Другими словами, это будет выполняться:
- Примеры\CPP. SelectionCriteria1.Example.dll - class11::method11, class11::method112, class12::method121
- Примеры\CPP. SelectionCriteria2.Example.dll — class21::method211.
Обратите внимание, что вы можете использовать "/select" в сочетании с другими параметрами команд, такими как "/list" "/listproperties" и т. д.
Смарт-кавычки
Вы можете столкнуться с смарт-кавычками в критериях выбора, если вы копируете критерии выбора из документа Outlook или Word обратно в командную строку. Дополнительные сведения о том, какие умные цитаты находятся на смарт-цитатах: скрытый бедствие текста, предназначенного для использования компьютера
Нет простого способа избежать смарт-кавычки. Лучший подход заключается в удалении всех "двойных кавычки" и "одинарных кавычки в критериях выбора после того, как вы скопировали его в командную строку и повторно введите кавычки части запроса.
При создании сообщений в Outlook их можно отключить. Введите "смарт-кавычки" в поле справки Outlook, чтобы найти это.
Выбор на основе быстрого имени
TAEF позволяет быстро выбрать на основе имени в командной строке с помощью параметра командной строки "/name":
/name:<test name with wildcards>
эквивалентно правилу
/select:@Name='<test name with wildcards>'
Другими словами, теперь можно указать запрос выбора на основе имени, например:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Name='*::class11::*'"
быстрее с помощью /name , например:
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /name=*::class11::*
Обратите внимание, что если в командной строке указаны как /name , так и /select , то параметр /name игнорируется и /select имеет приоритет.