Question

Je suis en train de rassembler quelques idées pour notre plate-forme de tests automatisés et je recherche Selenium pour le coureur de tests.

J'encapsule les scripts Selenium C # enregistrés dans un test MbUnit, qui est déclenché via la tâche MbUnit NAnt. Le client de test Selenium est créé comme suit:

selenium = new DefaultSelenium("host", 4444, "*iexplore", "http://[url]/");

Comment puis-je passer les paramètres d'hôte, de port et d'URL dans le test afin que leurs valeurs puissent être contrôlées via la tâche NAnt?

Par exemple, plusieurs serveurs Selenium RC peuvent être à l'écoute et je souhaite utiliser le même code de test en transmettant chaque adresse de serveur au lieu d'intégrer les paramètres dans les tests eux-mêmes.

J'ai une approche simulée à l'aide d'une tâche NAnt personnalisée que j'ai écrite mais ce n'est pas la solution la plus élégante à l'heure actuelle et je me suis demandé s'il existait un moyen plus facile d'accomplir ce que je veux faire.

Merci beaucoup si quelqu'un peut vous aider.

Était-ce utile?

La solution

Merci pour les réponses reçues jusqu'à présent.

Les variables d'environnement pourraient fonctionner. Cependant, nous pourrions exécuter des tests en parallèle via un seul assemblage de test. Par conséquent, je ne voudrais pas que les paramètres soient écrasés pendant l'exécution, ce qui risquerait de rompre un autre test. Intéressant sujet de réflexion cependant, je pense que je pourrais l’utiliser dans d’autres domaines.

Ma solution actuelle implique la création d'une tâche NAnt personnalisée en plus de la tâche MbUnit, ce qui me permet de spécifier les paramètres d'hôte, de port et d'URL supplémentaires en tant qu'attributs. Celles-ci sont ensuite enregistrées en tant que fichier de configuration dans le répertoire de construction, puis lues par les assemblys de test. Cela semble un peu "maladroit". pour moi comme mes tests doivent hériter d'une classe spécifique. Pas trop mal, mais j'aimerais avoir moins de dépendances et me concentrer sur les tests.

Peut-être que je m'inquiète trop !!

Autres conseils

Pour tous les appareils de test, j'ai une classe de base qui a le code d'installation suivant:

    [FixtureSetUp]
    public virtual void TestFixtureSetup ()
    {
        BrowserType = (BrowserType) Enum.Parse (typeof (BrowserType),
            System.Configuration.ConfigurationManager.AppSettings["BrowserType"],
            true);
        testMachine = System.Configuration.ConfigurationManager.AppSettings["TestMachine"];
        seleniumPort = int.Parse (System.Configuration.ConfigurationManager.AppSettings["SeleniumPort"],
            System.Globalization.CultureInfo.InvariantCulture);
        seleniumSpeed = System.Configuration.ConfigurationManager.AppSettings["SeleniumSpeed"];
        browserUrl = System.Configuration.ConfigurationManager.AppSettings["BrowserUrl"];
        targetUrl = new Uri (System.Configuration.ConfigurationManager.AppSettings["TargetUrl"]);

        string browserExe;
        switch (BrowserType)
        {
            case BrowserType.InternetExplorer:
                browserExe = "*iexplore";
                break;
            case BrowserType.Firefox:
                browserExe = "*firefox";
                break;

            default:
                throw new NotSupportedException ();
        }

        selenium = new DefaultSelenium (testMachine, seleniumPort, browserExe, browserUrl);
        selenium.Start ();

        System.Console.WriteLine ("Started Selenium session (browser type={0})",
            browserType);

        // sets the speed of execution of GUI commands
        if (false == String.IsNullOrEmpty (seleniumSpeed))
            selenium.SetSpeed (seleniumSpeed);
    }

Je fournis alors simplement au lanceur de test une config. fichier:                                                                

Pour MSBuild, j'utilise des variables d'environnement, je les crée dans ma configuration CC.NET, puis elles sont disponibles dans le script. Je pense que cela fonctionnerait pour vous aussi.

Chaque fois que je dois intégrer une entité externe à l'aide de NAnt, je finis par utiliser la tâche d'exécution ou par l'écriture d'une tâche personnalisée . Compte tenu des informations que vous avez publiées, il semblerait que la rédaction de votre propre serait effectivement une bonne solution. Cependant, vous déclarez que vous n'êtes pas satisfait. Pouvez-vous expliquer un peu pourquoi vous ne pensez pas que votre solution actuelle est une solution élégante ?

Mettre à jour

Ne connaissant pas les détails internes , il semble que vous ayez très bien résolu le problème avec une tâche personnalisée. D'après ce que j'ai entendu, c'est comme ça que je l'aurais fait.

Peut-être une nouvelle solution se révélera-t-elle à temps, mais pour le moment soyez léger!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top