Treffen Sie Codeception 3.0

Es ist an der Zeit, die neue Hauptversion von Codeception zum Leben zu erwecken! Im Laufe der Jahre der Evolution und kontinuierlichen Verbesserung haben wir viel gelernt und präsentieren Ihnen heute die beste Version von Codeception. Wir glauben immer noch, dass einfache Tests wichtig sind: Lesen, Schreiben und Debuggen von Tests sollten einfach sein.

Es ist schwierig, ein Projekt zu verwalten, das versucht, alle Arten von Frameworks und CMS abzudecken, von Symfony bis WordPress, von Laravel bis Magento. Wir sehen jedoch, dass Leute aus diesen Communities uns regelmäßig Patches senden. Unsere Philosophie ist es, die Tests vom Framework zu trennen und ähnliche Lösungen über Module auszutauschen - der richtige Weg. Unsere großartige Community verbessert dieses Projekt weiter.

OK, was ist mit Codeception 3.0?

Inkompatible Änderungen


PHPUnit 8-Unterstützung


In Version 3.0 haben wir nichts kaputt gemacht. Habe es für die nächste Hauptversion verlassen. Daher erheben wir keine unterstützte Version von PHP: Codeception 3.0 ist weiterhin mit PHP 5.6+ kompatibel, da das Testen für alle zugänglich sein sollte. Es unterstützt weiterhin alle wichtigen Frameworks und ist mit PHPUnit 6 und PHPUnit 7 kompatibel.

Das Speichern all dieser Teile ist jedoch schwierig, und wir gehen davon aus, dass Sie in Version 3.0 eine mögliche kritische Änderung erhalten können, da wir die Unterstützung für PHPUnit 8 hinzugefügt haben. Andernfalls sollte das Update für Sie reibungslos sein. Wenn Sie Probleme beim Aktualisieren haben, ändern Sie die Version von PHPUnit in composer.json auf 6 oder 7:

"phpunit/phpunit": "^7.0" 

Vielen Dank an unseren Hauptverantwortlichen, @Naktibalda, für die Unterstützung von PHPUnit 8, ohne Kompromisse bei der Kompatibilität einzugehen . Es war eine große Aufgabe, und wenn Sie sich unser Codeception / Phpunit-Wrapper- Projekt ansehen , werden Sie verstehen, warum.

Remote-Module


Wir haben beschlossen, einige der alten Module aufzugeben, von denen wir hoffen, dass niemand sie verwendet. Das:

  • AngularJS - funktionierte nur für Angular 1
  • ZF1 - das Framework ist veraltet
  • Yii1 - das Framework ist veraltet
  • Silex - das Framework ist veraltet
  • Facebook - Modul wird nicht unterstützt
  • XMLRPC - Modul wird nicht unterstützt

Wenn Sie sie benötigen, kopieren Sie einfach ihren Code aus dem 2.5-Zweig und erstellen Sie einen benutzerdefinierten Helfer.

Geänderte Standardeinstellungen


Wenn Sie Multisessionstests und die Befehle $ I-> haveFriend verwenden, werden Sie feststellen, dass Ihre Tests fehlgeschlagen sind. Friend- Methoden sind nicht mehr in der Codeception \ Actor- Klasse enthalten, daher müssen Sie sie manuell hinzufügen. In Ihrem AcceptanceTester (oder einer anderen Klasse, die Multisessionstests verwendet) ist das Merkmal Codeception \ Lib \ Actor \ Shared enthalten :

 <?php class AcceptanceTester extends \Codeception\Actor { use _generated\AcceptanceTesterActions; use \Codeception\Lib\Actor\Shared\Friend; } 

Wir haben auch bedingte Anweisungen für Neuinstallationen deaktiviert (weil sie häufig missbraucht werden). Wenn Sie also canSee- Methoden verwenden möchten , müssen Sie sie aktivieren.

Neue Funktionen


Erweiterte interaktive Shell


Diese Funktion wurde aus unserem freundlichen CodeceptJS- Projekt portiert. Sie fügt eine neue REPL- Schnittstelle hinzu, sodass Sie den Test jetzt anhalten und verschiedene Befehle in der Konsole ausführen können.

Diese Funktion ändert die Art und Weise, wie Sie Ihre Funktions- und Abnahmetests schreiben, vollständig. Anstatt blind verschiedene Befehle auszuprobieren und die Tests ständig neu zu starten, können Sie schreiben:

 <?php $I->amOnPage('/'); $I->pause(); 

und beginnen Sie Schritt für Schritt, Befehle nacheinander einzugeben, um einen Test zu schreiben. Kopieren Sie die erfolgreichen Teams in Ihre Tests, und am Ende erhalten Sie einen voll funktionsfähigen Test. Wenn Sie WebDriver verwenden , können Sie mit einer einzigen Browsersitzung einen vollständigen Abnahmetest schreiben.

Im Gegensatz zur vorherigen Implementierung der interaktiven Shell, die auf hoa / console basiert, können Sie die Eingabe mit den Tasten Links und Rechts bearbeiten:

Konsole

Try & Retry-Methoden


Diese Methoden wurden eingeführt, um das Testen des Browsers weniger schmerzhaft zu machen. In einer Welt voller JavaScript- und einseitiger Anwendungen können Sie sich nicht mehr auf einzelne Ereignisse verlassen. Manchmal müssen Sie die Aktion mehrmals wiederholen, um sie auszuführen.

Jetzt können Sie dies mit Retry * -Methoden tun, mit denen Sie die Schritte in Ihren Tests stabilisieren können:

 <?php // use $I->retryClick('Create'); // instead of just $I->click('Create'); 

Diese Funktion wurde ebenfalls von CodeceptJS portiert, jedoch etwas anders implementiert.

Was aber, wenn sich Ihre Site in verschiedenen Umgebungen unterschiedlich verhalten muss? Zeigen Sie beispielsweise eine Benachrichtigung über die Annahme von Cookies in Abhängigkeit von der Region an und akzeptieren Sie Cookies, wenn diese Benachrichtigung angezeigt wird. Sie können dies mit tryTo * -Aktionen tun:

 <?php if ($I->tryToSeeElement('.alert.cookie')) { $I->click('Accept', '.cookie'); } 

Die Methoden try * und retry * wurden als schrittweise Dekoratoren implementiert, sodass Sie zusätzliche Aktionen generieren können, indem Sie Modulmethoden einschließen. Bedingte Anweisungen (canSee * -Methoden) wurden ebenfalls als schrittweise Dekoratoren überarbeitet. Sie müssen sie daher explizit in den Einstellungen aktivieren.

Ausgabeartefakte


Fehlgeschlagene Tests enthalten jetzt eine Liste aller verfügbaren Artefakte. Für den REST-API-Test enthält jeder Test den Hauptteil der letzten Antwort, um das Debuggen auf CI-Servern zu vereinfachen.

Artefakte

Installation und Upgrade


Um auf Version 3 zu aktualisieren, ändern Sie einfach die Version in "composer.json" in "^ 3.0":

 "codeception/codeception": "^3.0" 

Fazit


Vielen Dank an alle, die all die Jahre bei uns waren und dazu beitragen, Codeception jeden Tag besser zu machen. Nochmals vielen Dank an Naktibalda für die Unterstützung kleinerer Releases und den Aufbau einer Kompatibilitätsbrücke.

Vielen Dank an Otto Kekäläinen von Seravo für die großzügige Spende.

Und ein paar Worte von Mikhail Bodnarchuk, der vor 8 Jahren mit Codeception begonnen hat:

Als Person, die sich für Qualität und Prüfung interessiert, war ich daran interessiert, die Frage zu beantworten: Was muss zuerst überprüft werden? Und die beste Antwort, die ich gefunden habe, ist, diese Informationen aus Nutzerkritiken zu erhalten. Manchmal kann ein Fehler nur von einem normalen Benutzer gefunden werden, ohne eine Stapelverfolgung zu verursachen. Und ich würde gerne sehen, dass Benutzer einer Website oder Webanwendung solche Fehlermeldungen sofort senden können. Aus diesem Grund habe ich Bugira Bugtracker , mein neues SaaS-Produkt, erstellt, um Fehlerberichte von Benutzern zu erhalten. Wenn Ihnen meine Projekte wie Codeception oder CodeceptJS gefallen, versuchen Sie es mit Bugira. Dies wird Ihnen helfen, eine bessere Kommunikation mit Ihren Benutzern herzustellen und bessere Produkte zu erstellen!

Vollständiges Changelog Version 3.0
Aktualisierte Dokumentation

Source: https://habr.com/ru/post/de456140/


All Articles