Vous êtes ennuyé par d’abrutissantes et répétitives séquences de tests? authentification, sélection d’un dossier client, ou une certaine séquence de navigation? Il est possible, avec Canoo WebTest, de définir des macros.

On se crée d’abord un projet:

webtest -f %WEBTEST_HOME%\webtest.xml wt.createProject

La structure de répertoires du projet se décline comme suit:

monprojet
    |-- definitions/
    |-- dtd/
    |-- includes/
    |-- tests/
    |-- build.xml
    |-- definitions.xml

Sous /définitions, il suffit de créer des fichiers XML représentants ces macros éreintantes:

<?xml version="1.0" encoding="UTF-8"?>
<macrodef name="login">
    <attribute name="username"/>
    <attribute name="password"/>

    <sequential>
        <invoke url="/login.do" />
        <verifyTitle text="Ouverture de la session" />
        <setInputField name="u" value="@{username}" />
        <setInputField name="p" value="@{password}" />
        <clickButton name="Ok" />
        <verifyTitle text="Bienvenue @{username}!" />
    </sequential>
</macrodef>

Une fois ceci fait, on roule la commande nécessaire afin d’ajouter notre macro au fichier prévu à cet effet, definitions.xml:

monprojet%> webtest wt.generateDefinitions

NOTE: cette étape est, selon moi, de trop. Ceci devrait se faire automatiquement lors de l’exécution des tests. D’autant que le fichier des définitions de macros contient un avertissement de ne pas l’éditer manuellement, qu’un script s’en occupera, ce qui nous expose bêtement au fonctionnement de l’outil.

Ensuite, dans notre test, on se sert de cette macro de façon fort élégante:

<webtest name="S'authentifier et ...">

    <login username="jjcharest" password="canada" />
    <!-- ... -->    

</webtest>

Et Hop! On roule les test …

monprojet%> webtest

Et là on est heureux en saperlipopette!

Rapport de succès de Webtest

JS.

5 réponses à “Définitions de macros avec Canoo WebTest”

  1. charles Says:

    Ouin, c’est facile à lire comme un livre pour enfants…

    :)

    CB

  2. Sylvain Says:

    Je suis un fervant utilisateur de Selenium pour mes tests d’intégration. Par contre, j’aime l’approche très simple de ce petit framework. J’y jeterai définitivement un oeil. Belle découverte !!!

  3. Avander Says:

    hmm, je saisis pas trop la différence avec les includes… ça doit être subtil non?

  4. JS Bournival Says:

    En fait (et je te répond rapidement), je n’en ai aucune idée. Par contre, les macros sont pas mal plus élégantes, exprimées à l’aide de balises, plutôt qu’un échafaudage à partis d’un obscur DTD.

  5. Avander Says:

    je note que ça existe et que c’est élégant… :-) ).

Répondre