Partager via


Sélection

Le Framework de Rédaction et d’Exécution de Tests (TAEF) fournit un mécanisme pour exécuter ou omettre sélectivement certains tests en fonction des informations de métadonnées que vous fournissez. La section suivante passe en revue divers exemples de l’utilisation de ce mécanisme de sélection avec TE.exe.

Vous pouvez exécuter TE.exe depuis une fenêtre d’invite de commande.

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

Cette section décrit l’option TE.exe /select:selection criteria. Pour plus d’informations sur TE.exe, veuillez consulter la section TE.exe Command Options.

Les critères de sélection sont appliqués globalement à tous les binaires de test mentionnés dans l’invite de commande. Considérons deux binaires de test : Examples\CPP.SelectionCriteria1.Example.dll et Examples\CPP.SelectionCriteria2.Example.dll. L’exemple suivant montre les propriétés, ou métadonnées, spécifiées à différents niveaux dans ces binaires de test. Vous pouvez également obtenir cela en spécifiant l’option /listproperties dans la fenêtre de l’invite de commande.

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 d’autres termes, en utilisant /listproperties sur chacun de ces binaires de test séparément, vous obtenez :

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

Et :

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

Il est important de noter à ce stade que les binaires de test sont listés avec leur chemin complet, et les noms de classes sont listés comme « <Namespace>::<ClassName> » dans le cas des binaires de test natifs et « <Namespace>.<ClassName> » dans le cas des binaires de test gérés. De même, les noms de méthodes de test sont listés comme « <Namespace>::<ClassName>::<TestMethodName> » dans le cas des binaires de test natifs et « <Namespace>.<ClassName>.<TestMethodName> » dans le cas des binaires de test gérés.

En d’autres termes, le nom complet de toute fonction ou méthode est ce qui est sauvegardé dans te. Cela permet de distinguer de manière unique toute méthode. Par exemple, si deux classes ont le même nom de méthode, la qualification de la classe permet de sélectionner de manière unique la méthode qui vous intéresse. À cette fin, les critères de sélection aident à exécuter uniquement les tests qui correspondent à vos critères dans les binaires de test donnés.

Dans l’exemple ci-dessus, disons que dans Examples\Cpp.SelectionCriteria1.Example.dll, vous pouvez choisir « Method111 » en utilisant l’un des critères de sélection suivants :

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

Vous pouvez choisir d’exécuter tous les tests qui ont été marqués avec une « Priority » inférieure à 2 en exécutant :

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

Cela n’exécuterait que Examples\CPP.SelectionCriteria1.Example.dll - « class11::method111 » dans notre exemple.

Si vous voulez exécuter tous les tests sous class11, vous pouvez utiliser la propriété qualifiée « Name » avec le filtrage par caractère générique comme suit :

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

Lors de l’utilisation des critères de sélection, il y a quelques éléments à garder à l’esprit :

  • « and », « not », et « or » sont des mots réservés et sont insensibles à la casse.
  • les noms et les valeurs des propriétés de métadonnées sont insensibles à la casse, par exemple « C2 » dans l’exemple, correspondrait à « c2 » et « C2 ». Ainsi, si vous avez une fonction avec la métadonnée « property » et une autre avec « Property » et que le critère de sélection recherche « PROPERTY », cela correspondrait aux deux.
  • La valeur de chaîne dans la chaîne de requête de sélection doit être incluse entre des guillemets simples. Dans une valeur de chaîne dans la requête de sélection, « ? » est un caractère générique unique et « * » est un ou plusieurs caractères génériques.
  • Lors de l’utilisation de guillemets à votre invite de commande, faites attention aux guillemets intelligents lorsque vous copiez une requête de sélection. Si vous copiez une requête de sélection depuis un e-mail Outlook, vous pouvez accidentellement avoir des guillemets intelligents, et TAEF peut être incapable de les analyser. Tapez les guillemets à la place.

Passons en revue quelques exemples rapides de critères de sélection composés et ce qu’ils exécuteraient.

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

Exécutera :

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

Exécutera :

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

Exécutera :

  • 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=*)"

Exécute tous les tests où la valeur de BackwardsCompatibility n’a pas été spécifiée. (Voir les éléments suivants).

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

exécute tous les tests où la valeur Owner commence par « C » (insensible à la casse). Ainsi, la commande précédente exécute tous les tests dans Examples\CPP.SelectionCriteria1.Example.dll et tous les tests dans Examples\CPP.SelectionCriteria2.Example.dll sous class21 (c’est-à-dire, method211)

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

exécute tous les tests où soit la valeur de BackwardsCompatibility n’est pas spécifiée, soit où le nom du propriétaire commence par « C » et la valeur de backwardsCompatibility contient XP. NOTEZ comment les parenthèses « ( » et « ) » sont utilisées pour spécifier l’ordre de préséance.

Dans l’exemple, cela exécuterait sélectivement :

  • 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='???'"

n’exécute que les tests dont la valeur de propriété owner contient uniquement 3 caractères.

Dans notre exemple, cela correspondrait à « C » et n’exécuterait que :

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

Remarque

Il s’agit d’un bon exemple de la façon dont vous pouvez utiliser « >=< », « >=< » où les valeurs de propriété sont des valeurs flottantes.

Dans notre exemple, cela exécuterait toutes les méthodes sauf Examples\CPP.SelectionCriteria2.Example.dll - class22::method221, où aucune priorité n’a été spécifiée. En d’autres termes, cela exécuterait :

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

NOTEZ que vous pouvez utiliser « /select » en conjonction avec d’autres options de commande comme « /list » « /listproperties » etc.

Guillemets intelligents

Vous pouvez rencontrer des guillemets intelligents dans vos critères de sélection si vous copiez des critères de sélection depuis Outlook ou un document Word vers votre invite de commande. Vous pouvez trouver plus d’informations sur ce que sont les guillemets intelligents sur les guillemets intelligents : le fléau caché du texte destiné à la consommation d’ordinateurs

Il n’y a pas de moyen facile d’éviter les guillemets intelligents - la meilleure approche est de supprimer tous les guillemets doubles et simples dans les critères de sélection après les avoir copiés dans l’invite de commande et de retaper la partie guillemets de la requête.

Il existe un paramètre d’options pour les désactiver lors de la création de messages dans Outlook. Tapez « guillemets intelligents » dans la boîte d’aide d’Outlook pour trouver ceci.

Sélection rapide basée sur le nom

TAEF permet une sélection rapide basée sur le nom à l’invite de commande en utilisant le paramètre de ligne de commande /name :

/name:<test name with wildcards>

équivaut à :

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

En d’autres termes, vous pouvez maintenant fournir une requête de sélection basée sur le nom comme :

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

plus rapidement en utilisant /name comme suit:

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

Notez que si /name et /select sont tous deux fournis à l’invite de commande, alors /name est ignoré et /select prend la priorité.