Partager via


Métadonnées conditionnelles

Il est parfois utile de faire changer les valeurs de métadonnées en fonction des valeurs d’exécution. Les métadonnées conditionnelles permettent aux métadonnées de module, de classe ou de méthode d’être appliquées uniquement dans certaines conditions en fonction des paramètres d’exécution.

Syntaxe

Pour rendre les métadonnées conditionnelles, ajoutez une condition entourée de crochets après le nom des métadonnées. La condition doit être au format de notre langage de requête de sélection. Les valeurs des variables proviennent des paramètres d’exécution.

Par exemple, supposons qu’un test possède les métadonnées suivantes :

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

Ensuite, quand TAEF charge la DLL, il évalue la condition « @NoElevation=true » en fonction des paramètres d’exécution. Par conséquent, si l’utilisateur définit le paramètre d’exécution « NoElevation » sur true, les métadonnées du test lui sont appliquées avec le nom « Ignore » et la valeur « true ».

Si plusieurs métadonnées conditionnelles apparaissent dans un seul test, chacune d’elles est évaluée indépendamment de la même manière. Cela peut être utile si vous souhaitez qu’un test reconnaisse plusieurs valeurs possibles d’un paramètre d’exécution.

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 un test a les métadonnées indiquées ci-dessus et que l’utilisateur définit TestCaseLevel sur Low, le test n’est appelé que trois fois en raison de la source de données légère. Si l’utilisateur définit TestCaseLevel sur High, la source de données PICT est utilisée pour générer de nombreux autres paramètres pour le test. Si TestCaseLevel n’est pas défini sur High ou Low, aucune métadonnées n’est ajoutée.

Valeurs par défaut

Lorsque vous souhaitez ajouter des métadonnées uniquement quand aucune autre condition pour ce nom de métadonnées particulier n’a été évaluée à true, vous pouvez ajouter le nom des métadonnées avec [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 un test a les métadonnées ci-dessus et que l’utilisateur ne définit pas TestCaseLevel sur Low ou High, Pict:Order est défini sur 2. Si l’utilisateur définit TestCaseLevel sur Low ou High, Pict:Order est défini sur 1 ou 3, respectivement. La valeur 2 ne s’applique pas, car au moins une condition sur ce test pour Pict:Order a été évaluée à true.

Veillez à ne pas laisser la valeur [par défaut] si nécessaire.

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 a la valeur Low, l’ensemble de métadonnées ci-dessus équivaut au jeu de métadonnées suivant :

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

Dans ce cas, il n’est pas spécifié si la source de données PICT utilisera « 1 » ou « 2 » pour l’ordre PICT.