Compartir a través de


Metadatos condicionales

A veces resulta útil que los valores de metadatos cambien en función de los valores en tiempo de ejecución. Los metadatos condicionales permiten que los metadatos del módulo, la clase o el método solo se apliquen en determinadas condiciones en función de los parámetros en tiempo de ejecución.

Sintaxis

Para que los metadatos sean condicionales, agregue una condición rodeada de corchetes después del nombre de los metadatos. La condición debe tener el formato del lenguaje de consulta de selección. Los valores de las variables proceden de parámetros en tiempo de ejecución.

Por ejemplo, supongamos que una prueba tiene los metadatos siguientes:

TEST_METHOD_PROPERTY(L"RunAs", L"Elevated")
TEST_METHOD_PROPERTY(L"Ignore[@NoElevation=true]", L"true")

Después, cuando TAEF cargue el archivo DLL, evaluará la condición "@NoElevation=true" en función de los parámetros en tiempo de ejecución. Por lo tanto, si el usuario establece el parámetro en tiempo de ejecución "NoElevation" en true, la prueba tendrá metadatos aplicados con el nombre "Ignore" y el valor "true".

Si aparecen varios metadatos condicionales en una prueba, cada uno se evalúa de forma independiente de la misma manera. Esto puede ser útil si desea que una prueba reconozca varios valores posibles de un parámetro en tiempo de ejecución.

TEST_METHOD_PROPERTY(L"Data:MyTestData[@TestCaseLevel='Low']", L"{ Datum1, Datum2, Datum3 }")
TEST_METHOD_PROPERTY(L"DataSource[@TestCaseLevel='High']", L"Pict:FullDataSet.model?Order=3")

Si una prueba tiene los metadatos mostrados anteriormente y el usuario establece TestCaseLevel en Bajo, la prueba solo se invocará tres veces debido al origen de datos ligero. Si el usuario establece TestCaseLevel en High, el origen de datos PICT se usará para generar muchos más parámetros para la prueba. Si TestCaseLevel no está establecido en Alto o Bajo, no se agregarán metadatos.

Valores predeterminados

Si desea agregar metadatos solo cuando no se hayan evaluado otras condiciones para ese nombre de metadatos concreto como true, puede anexar el nombre de metadatos con [default].

TEST_METHOD_PROPERTY(L"DataSource", L"Pict:MyTest.model")
TEST_METHOD_PROPERTY(L"Pict:Order[@TestCaseLevel='Low']", L"1")
TEST_METHOD_PROPERTY(L"Pict:Order[default]", L"2")
TEST_METHOD_PROPERTY(L"Pict:Order[@TestCaseLevel='High']", L"3")

Si una prueba tiene los metadatos anteriores y el usuario no establece TestCaseLevel en Bajo o Alto, Pict:Order se establecerá en 2. Si el usuario establece TestCaseLevel en Bajo o Alto, Pict:Order se establecerá en 1 o 3, respectivamente. El valor de 2 no se aplicará porque al menos una condición en esa prueba para Pict:Order se evalúa como true.

Tenga cuidado de no dejar el [valor predeterminado] si es necesario.

TEST_METHOD_PROPERTY(L"DataSource", L"Pict:MyTest.model")
TEST_METHOD_PROPERTY(L"Pict:Order[@TestCaseLevel='Low']", L"1")
TEST_METHOD_PROPERTY(L"Pict:Order", L"2") // This should have [default]
TEST_METHOD_PROPERTY(L"Pict:Order[@TestCaseLevel='High']", L"3")

Si TestCaseLevel se establece en Bajo, el conjunto anterior de metadatos es equivalente al siguiente conjunto de metadatos:

TEST_METHOD_PROPERTY(L"DataSource", L"Pict:MyTest.model")
TEST_METHOD_PROPERTY(L"Pict:Order", L"1")
TEST_METHOD_PROPERTY(L"Pict:Order", L"2")

En este caso, no se especifica si el origen de datos PICT usará "1" o "2" para el pedido PICT.