Also habe ich begonnen, einige Ruby-Unit-Tests zu erstellen, die Selenium RC verwenden, um meine Web-App direkt in der Browser. Ich benutze den Selenum-Client für Ruby. Ich habe eine Basisklasse für alle meine anderen Selentests erstellt, von denen ich erben kann.
Dies erzeugt zahlreiche SeleniumDriver-Instanzen und alle Methoden, die fehlen, werden für jede Instanz aufgerufen. Dies führt im Wesentlichen die Tests parallel.
Wie haben andere Leute das automatisiert?
Dies ist meine Implementierung:
%Vor%Das funktioniert, aber wenn ein Browser ausfällt, schlägt der gesamte Test fehl, und es gibt keine Möglichkeit zu wissen, in welchem Browser es fehlgeschlagen ist.
Haben Sie Selenium Grid getestet? Ich denke, es schafft einen ziemlich guten zusammenfassenden Bericht, der Details zeigt, die Sie brauchen. Ich könnte mich irren, da ich es eine ganze Weile nicht benutzt habe.
Ich habe Selenium's protocol.rb geändert, um eine AssertionFailedError
mit der @browser_string
und der zurückgegebenen Nachricht aus dem Selenium RC zu erstellen, wenn die Antwort nicht mit "OK" begonnen hat. Ich habe auch die Methode http_post
geändert, um den gesamten Antworttext zurückzugeben, und method_missing
, um ein Array mit Rückgabewerten für die Ausgabe von get_X-Befehlen an Selenium RC zurückzugeben.
Fügen Sie diesen Code dem Code in der Frage hinzu, und Sie sollten sehen können, welche Assertionen in welchen Browsern fehlschlagen.
%Vor%Haftungsausschluss: Kein Selen-Experte.
Möchten Sie nur wissen, welcher Browser fehlgeschlagen ist, oder möchten Sie den Test in allen Browsern ausführen und dann die vollständigen Fehler melden, wenn dies erledigt ist?
Ersteres ist ziemlich einfach, wenn Sie die Treiber in Ihrem Setup mit Hash speichern. (Ich bin mir sicher, dass es eine fantastische Art und Weise gibt, dies mit Hash.inject zu tun, aber ich bin faul.)
%Vor%Ändern Sie dann Ihre Kernfunktion, um Ausnahmen so zu ändern, dass sie den Namen des verwendeten Treibers enthalten, etwa wie folgt:
%Vor%Sollte dich nahe bringen.
Sie müssen jeden Test unabhängig voneinander behandeln. Wenn also ein Test fehlschlägt, wird er weitere Tests durchführen. Schauen Sie sich phpunit und selen rc
anTags und Links ruby unit-testing ruby-on-rails automated-tests selenium