Frage

Ich stelle zusammen ein paar Ideen für unsere automatisierte Testplattform und wurde an Selen für den Test Läufer suchen.

Ich bin Umwickeln des aufgezeichneten Selenium C # Skripte in einem MbUnit Test, der über die MbUnit NAnt Aufgabe ausgelöst wird. Der Selenium Test-Client wird wie folgt erstellt:

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

Wie kann ich die Host-Port und URL-Einstellungen in den Test bestehen, so dass ihre Werte können über die NAnt Aufgabe gesteuert werden?

Zum Beispiel kann ich mehr Selenium RC-Server hören und ich möchte den gleichen Test-Code verwenden, in jeder Server-Adresse geben statt Einbetten der Einstellungen innerhalb der Tests selbst.

Ich habe einen Ansatz mit einem benutzerdefinierten NAnt Aufgabe verspottet ich geschrieben habe, aber es ist nicht die eleganteste Lösung zum jetzigen Zeitpunkt und ich fragte mich, ob es einen einfacheren Weg zu erreichen, was ich tun möchte.

Vielen Dank, wenn jemand helfen kann.

War es hilfreich?

Lösung

Danke für die Antworten bisher.

Umgebungsvariablen funktionieren können, jedoch können wir parallel Tests über eine einzige Testanordnung ausgeführt werden, so würde ich die Einstellungen nicht will während der Ausführung überschrieben werden, was eine weiteren Test durchbrechen könnte. Interessante Gedankenlinie obwohl, danke, ich rechne ich, dass in anderen Bereichen nutzen könnte.

Meine aktuelle Lösung beinhaltet eine benutzerdefinierte NAnt Aufgabe auf der MbUnit Aufgabe bauen, die ich die zusätzliche Host, Port, URL-Einstellungen als Attribute angeben kann. Diese werden dann als Konfigurationsdatei im Build-Verzeichnis gespeichert und dann eingelesen von den Testanordnungen. Das fühlt sich ein bisschen „klobig“ mich als meine Tests von einer bestimmten Klasse erben müssen. Gar nicht so schlecht, aber ich möchte weniger Abhängigkeiten haben und konzentrieren sich auf die Prüfung.

Vielleicht auch ich besorgniserregend viel !!

Andere Tipps

Ich habe eine Basisklasse für alle Prüfvorrichtungen, den folgenden Setup-Code hat:

    [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);
    }

ich dann einfach den Testläufer mit einer Config versorgen. Datei:                                                                

Für MSBuild I Umgebungsvariablen verwenden, erzeuge ich die in meinem CC.NET Config dann würden sie im Skript zur Verfügung. Ich denke, dies auch für Sie funktionieren würde.

Immer muss ich mit einer externen Einheit integrieren NAnt entweder ich die exec Aufgabe am Ende mit oder benutzerdefinierte Aufgabe zu schreiben . Angesichts der Informationen, die Sie es geschrieben scheint, dass Ihr eigenes Schreiben in der Tat eine gute Lösung sein würde, aber erklären Sie, Sie nicht mit ihm zufrieden sind. Können Sie etwas erarbeiten, warum Sie nicht denken Sie aktuelle Lösung ist ein elegant ein?

Update

Nicht zu wissen, interne Details scheint es, wie Sie es ziemlich gut mit einer benutzerdefinierten Aufgabe gelöst haben. das ist von dem, was ich gehört habe, wie ich es getan habe.

Vielleicht eine neue Lösung zeigt sich in der Zeit, aber jetzt auf sich selbst Licht!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top