Compartir a través de


Selección

El marco de creación y ejecución de pruebas (TAEF) proporciona un mecanismo para ejecutar u omitir determinadas pruebas de forma selectiva en función de la información de metadatos que proporcione. En la sección siguiente se describen varios ejemplos de cómo usar este mecanismo de selección con TE.exe.

Puede ejecutar TE.exe desde una ventana del símbolo del sistema.

TE <test_binaries> [/select:<selection criteria>]

En esta sección se describe la opción /select:selection criteria de TE.exe. Para obtener más información sobre TE.exe, consulte Opciones de comandos de Te.exe.

Los criterios de selección se aplican globalmente a todos los archivos binarios de prueba que se han mencionado en el símbolo del sistema. Consideremos dos test_binaries: Examples\CPP.SelectionCriteria1.Example.dll y Examples\CPP.SelectionCriteria2.Example.dll . En el ejemplo siguiente se muestran las propiedades o metadatos especificados en los distintos niveles de estos test_binaries. También puede obtenerlo especificando la opción /listproperties en la ventana del símbolo del sistema.

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

En otras palabras, mediante /listproperties en cada una de estos test_binaries por separado, obtendrá:

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

Y:

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

Es importante tener en cuenta en este punto que test_binaries se muestra junto con su ruta de acceso completa, y los nombres de clase se enumeran como "<Namespace>::<ClassName>" en el caso de test_binaries nativos y "<Namespace>.<ClassName>" en el caso de test_binaries administrados. Del mismo modo, los nombres de método de prueba se enumeran como "<Namespace>::<ClassName>::<TestMethodName>" en el caso de los test_binaries nativos y "<Namespace>.<ClassName>.<TestMethodName>" en el caso de test_binaries administrados.

En otras palabras, el nombre completo de cualquier nombre o función es lo que se guarda en te. Esto es para permitir la capacidad de distinguir de forma única cualquier método. Por ejemplo, si dos clases tienen el mismo nombre de método, la calificación de clase ayuda a seleccionar de forma única el método que le interesa. Para ello, los criterios de selección solo ayudan a ejecutar las pruebas que coinciden con los criterios de los test_binaries especificados.

En el ejemplo anterior, por ejemplo, en Examples\Cpp.SelectionCriteria1.Example.dll, puede elegir "Method111" por cualquiera de los siguientes criterios de selección:

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'"

Puede optar por ejecutar todas las pruebas marcadas con "Prioridad" menor que 2 ejecutando:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority < 2"

Esto solo ejecutaría Examples\CPP. SelectionCriteria1.Example.dll : "class11::method111" en nuestro ejemplo.

Si desea ejecutar todas las pruebas en class11, puede usar la propiedad "Name" completa junto con la coincidencia de caracteres comodín para elegirla de la siguiente manera:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll
                                                               /select:"@Name='*::class11::*'"

Al usar criterios de selección, hay algunas cosas útiles para tener en cuenta:

  • "and", "not" y "or" son palabras reservadas y no distinguen mayúsculas de minúsculas.
  • Los nombres y valores de las propiedades de metadatos no distinguen mayúsculas de minúsculas, por ejemplo "C2" en el ejemplo, coincidirían con "c2" y "C2". Por lo tanto, si tiene una función con metadatos "property" y otra con "Property" y los criterios de selección buscan "PROPERTY", coincidiría con ambos.
  • El valor de cadena de la cadena de consulta de selección debe incluirse entre comillas simples. Dentro de un valor de cadena en la consulta de selección "?" es un carácter comodín único y "*" es 0 o más caracteres comodín.
  • Al usar comillas en el símbolo del sistema, tenga en cuenta las comillas inteligentes al copiar en una consulta de selección. Si copia una consulta de selección desde un correo electrónico de Outlook, es posible que tenga comillas inteligentes y TAEF no pueda analizarla. Pruebe con comillas en su lugar.

Veamos algunos ejemplos rápidos de criterios de selección compuestos y lo que se ejecutarían.

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=2"

Ejecutará:

  • Examples\CPP.SelectionCriteria2.Example.dll - class21::method211
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C2' AND @Priority=3"

Ejecutará:

  • Examples\CPP.SelectionCriteria1.Example.dll - class11::method112
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='U3' oR @Priority=1"

Ejecutará:

  • Examples\CPP.SelectionCriteria1.Example.dll - class11::method111
  • Examples\CPP.SelectionCriteria2.Example.dll - class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*)"

Ejecutará todas las pruebas en las que no se haya especificado el valor BackwardsCompatibility. (Observe los siguientes elementos).

  • Examples\CPP.SelectionCriteria1.Example.dll - class11::method111, class12::method121
  • Examples\CPP.SelectionCriteria2.Example.dll - class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Owner='C*'"

ejecutará todas las pruebas en las que el valor propietario comienza por "C" (sin distinción entre mayúsculas y minúsculas). Por lo tanto, el comando anterior ejecutará todas las pruebas en Examples\CPP. SelectionCriteria1.Example.dll y todas las pruebas de Examples\CPP. SelectionCriteria2.Example.dll en class21 (es decir, method211)

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"not(@BackwardsCompatibility=*) OR (@Owner='C*' AND @BackwardsCompatibility='*XP*')"

ejecutará todas las pruebas en las que no se especifica la propiedad BackwardsCompatibility o, donde el nombre del propietario comienza por "C" y el valor backwardsCompatibilty contiene XP. Tenga en cuenta cómo se usan los paréntesis "(" y ")" para especificar el orden de precedencia.

En el ejemplo, esto se ejecutaría de forma selectiva:

  • Examples\CPP.SelectionCriteria1.Example.dll - class11::method111, class12::method121,
  • Examples\CPP.SelectionCriteria2.Example.dll - class21::method211, class22::method221
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Owner='???'"

solo ejecutará pruebas que tengan el valor del propietario de la propiedad que contenga solo 3 caracteres.

En nuestro ejemplo, esto coincidiría con "C" y solo se ejecutaría:

  • Examples\CPP.SelectionCriteria1.Example.dll - class12::method121
Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /select:"@Priority>=1"

Nota:

Este es un buen ejemplo de cómo se puede usar ">=", "<=", ">" y "<" donde los valores de propiedad son flotantes.

En nuestro ejemplo, se ejecutarían todos los métodos excepto Examples\CPP.SelectionCriteria2.Example.dll: class22::method221, donde no se ha especificado ninguna prioridad. En otras palabras, esto se ejecutaría:

  • Examples\CPP.SelectionCriteria1.Example.dll - class11::method111, class11::method112, class12::method121
  • Examples\CPP.SelectionCriteria2.Example.dll - class21::method211.

Tenga en cuenta que puede usar "/select" junto con otras opciones de comando como "/list" "/listproperties", etc.

Comillas inteligentes

Es posible que encuentre comillas inteligentes en los criterios de selección si va a copiar los criterios de selección de un documento de Outlook o Word en el símbolo del sistema. Puede encontrar más información sobre las comillas inteligentes en Comillas inteligentes: La plaga oculta de los textos destinados al consumo informático

No hay ninguna manera fácil de evitar comillas inteligentes: el mejor enfoque es eliminar todas las comillas dobles " y comillas simples ' en los criterios de selección después de haber copiado en el símbolo del sistema y volver a escribir la parte de comillas de la consulta.

Hay una configuración de opciones para desactivarlas al crear mensajes en Outlook. Escriba "comillas inteligentes" en el cuadro de ayuda de Outlook para encontrarlo.

Selección rápida basada en nombre

TAEF permite una selección rápida basada en el nombre en el símbolo del sistema mediante el parámetro de línea de comandos "/name":

/name:<test name with wildcards>

equivale a:

/select:@Name='<test name with wildcards>'

En otras palabras, ahora puede proporcionar una consulta de selección basada en el nombre como:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll \
/select:"@Name='*::class11::*'"

con mayor rapidez mediante /name, así:

Te.exe Examples\CPP.SelectionCriteria1.Example.dll Examples\CPP.SelectionCriteria2.Example.dll /name=*::class11::*

Tenga en cuenta que si se proporcionan /name y /select en el símbolo del sistema, /name se omite y /select tiene prioridad.