Поделиться через


Выбор

Тестовая платформа разработки и выполнения (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 имеет приоритет.