Compartir a través de


Selección

El marco de creación y ejecución de pruebas (TAEF) proporciona un mecanismo para ejecutar o 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 TE.exe /select:selection criteria . Para obtener más información sobre TE.exe, vea TE.exe Opciones de comando.

Los criterios de selección se aplican de manera global a todos los binarios de prueba que se han mencionado en la línea de comandos. Consideremos dos test_binaries: Ejemplos\CPP.SelectionCriteria1.Example.dll y Ejemplos\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 obtener esto 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, al usar el comando /listproperties en cada uno 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 los test_binaries se muestran junto con su ruta de acceso completa, y los nombres de clases se enumeran como "<Namespace>::<ClassName>" en el caso de los binarios de prueba nativos y "<Namespace>.<ClassName>" en el caso de los binarios de prueba 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. Con este fin, los criterios de selección ayudan a ejecutar solo aquellas pruebas que coinciden con tus criterios en los test_binaries especificados.

En el ejemplo anterior, por ejemplo, en Ejemplos\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 ejemplos\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 se consideran insensibles a mayúsculas y 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 en 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 "*" representa cero o más caracteres comodín.
  • Cuando utilice comillas en el símbolo del sistema, tenga en cuenta las comillas inteligentes cuando copie en una consulta de selección. Si copia una consulta de selección desde un correo electrónico de Outlook, puede que accidentalmente contenga comillas inteligentes, y TAEF no pueda analizarla. Escriba las comillas en su lugar.

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

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

Se ejecutará:

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

Se ejecutará:

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

Se ejecutará:

  • Ejemplos\CPP.SelectionCriteria1.Example.dll: class11::method111
  • Ejemplos\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. (Vea los siguientes elementos).

  • Ejemplos\CPP.SelectionCriteria1.Example.dll: class11::method111, class12::method121
  • Ejemplos\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 de Examples\CPP.SelectionCriteria1.Example.dll and all tests in Examples\CPP.SelectionCriteria2.Example.dll under 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 BackwardsCompatibility 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:

  • Ejemplos\CPP.SelectionCriteria1.Example.dll: class11::method111, class12::method121,
  • Ejemplos\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 un valor de propietario que contenga solo 3 caracteres.

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

  • Ejemplos\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 valores flotantes.

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

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

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

Citas inteligentes

Es posible que encuentre comillas inteligentes en los criterios de selección si está copiando de nuevo 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 Las comillas inteligentes: El azote oculto del texto destinado al consumo de ordenadores

No hay una manera fácil de evitar las comillas tipográficas: el mejor enfoque es eliminar todas las comillas dobles y simples en los criterios de selección después de haberlos copiado al símbolo del sistema y volver a escribir la parte de la consulta que tiene comillas.

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

Selección basada en nombre rápido

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

/name:<test name with wildcards>

es equivalente 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 como así:

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

Tenga en cuenta que si se proporcionan tanto /name como /select en la consola, /name se omite y /select tiene prioridad.