Codeception mit Yii2

Von Julian Böhnke
2 Kommentare
Codeception Yii Framework

Mit automatisierten Tests machen sich Webentwickler das Leben leichter und stellen die Weichen für eine bessere Software-Qualität. Hier zeigen wir dir die ersten Schritte mit Codeception.

Als Webentwickler möchte man sicherstellen, dass seine Software immer einen gleichen Stand beibehält und man sich stets mit einem bestimmten Benutzer einloggen kann. Wenn ich dann beispielsweise eine ungültige E-Mail eingebe, soll immer dieselbe Fehlermeldung erscheinen. Solche Fehler werden immer wahrscheinlicher, je größer ein Team ist. Um dies zu verhindern, deckt man seine Software mit Tests ab. Wie man hierfür Codeception installiert, seine ersten Test schreibt und sie ausführt, erläutere ich in diesem Tutorial.

Die Installation

Um mit Codeception zu starten, muss zunächst die Installation durchgeführt werden. Hierzu gibt es zwei Möglichkeiten, welche wir jeweils über die Kommandozeile (CMD) ausführen.

 

  1. Global:                                                                                                                                                                                                              
    composer global require "codeception/codeception=2.2.*"
    composer global require "codeception/specify=*"
    composer global require "codeception/verify=*"
  2. Projekt bezogen                                                                                                                                                                                              
    composer require "codeception/codeception=2.2.*"
    composer require "codeception/specify=*"
    composer require "codeception/verify=*"

 

Nach der Installation muss der Pfad zu den Systemvariablen in PATH hinzugefügt werden.

Dies geht über Erweiterte Systemeinstellungen > TAB Erweitert > Umgebungsvariablen.

Dann den Wert PATH auswählen und auf Bearbeiten drücken. Je nach Windows Version 7, 8, 8.1 oder 10 kann der Wert unterschiedlich hinzugefügt werden. Bis zu Version Windows 10 muss man für das Hinzufügen des Wertes Folgendes beachten: Gehe bis an das Ende der Textbox und füge den Wert ein.

2016-06-02
Solltest du bereits das Betriebssystem Windows 10 nutzen, kann man den Wert ganz bequem über
Neu hinzufügen.

Nachdem du die vorgenannten Schritte durchgeführt hast,  kannst du von überall das Kommando “codecept” in der Kommandozeile (CMD) ausführen.

IMG_3246

Nun muss für das Yii2-Projekt noch die Codeception Extension für Yii2 installiert werden.

 

Dies können wir wieder über Composer erledigen.

Hierzu gibt es zwei Möglichkeiten:

 

  1. Wir öffnen die Kommandozeile (CMD)                                                                                                                                                
    php composer.phar require --prefer-dist yiisoft/yii2-codeception
    (composer require --prefer-dist yiisoft/yii2-cedeception)

 

oder du fügst diesen Teil manuell in deine composer.json in den “require” Teil ein.

 

  1. "yiisoft/yii2-codeception": "~2.0.5"

danach musst du nur noch “composer install” ausführen.

Unser erster Test

Für unseren ersten Test müssen wir in der Kommandozeile (CMD) innerhalb unseres Projektes in den Ordner “tests” wechseln. Dort erstellen wir dann mit dem Kommando “codecept generate:cept acceptance Welcome” unseren ersten Test.

Mit diesem Kommando wird dann unterhalb des Ordners Tests -> codeception -> acceptance die Datei WelcomeCept.php erstellt.

 

<?php

$I = new AcceptanceTester($scenario);

$I->wantTo('perform actions and see result');

 

Starten wir nun die erste Testphase:

Dies machen wir einfach mit dem Kommando “codecept run”.

Wenn alles funktioniert hat, bekommt du Folgendes zu sehen:

IMG_3245

Im nachfolgenden Schritt schreiben wir einen Test, um unseren Login zu testen.

Dazu erstellen wir über “codecept generate:cept functional Login” unseren Login-Test.

 

Nun öffnen wir die LoginCept-Klasse in dem Ordner “functional” und füllen sie mit unserem Login-Test.

 

<?php

use tests\codeception\FunctionalTester;
use tests\codeception\_pages\LoginPage;

$I = new FunctionalTester($scenario);
$I->wantTo('ensure login page works');

$loginPage = LoginPage::openBy($I);

$loginPage->login(‘username’, ‘password’);

Evtl. musst du hier die Function login entsprechend deines Loginform anpassen.

Wenn die Input-Boxen z. B. einen anderen “name” haben, müssen diese entsprechend hier

$this->actor->fillField('input[name="LoginForm[username]"]', $username);

 angepasst werden:  z. B. so 

$this->actor->fillField('input[name="AnmeldeForm[username]"]', $username);

.
Hinweis:

Falls dir die Datei LoginPage fehlt (die sollte schon standardmäßig im Yii-Testordner vorhanden sein), findest du hier deren Inhalt:

<?php


namespace tests\codeception\functional\_pages;


use yii\codeception\BasePage;


/**
 * Represents loging page
 */
class LoginPage extends BasePage

{


    public $route = 'user/login';


    /**
     * @param string $username
     * @param string $password
     */

    public function login($username, $password)

    {

        $this->actor->fillField('input[name="LoginForm[username]"]', $username);

        $this->actor->fillField('input[name="LoginForm[password]"]', $password);

        $this->actor->click('button[type=submit]');

    }

}

So, nun wollen wir unsere beiden Tests auch noch mal ausführen. Dies machen wir wieder mit dem Kommando “codecept run”.

Wenn alles gut gelaufen ist, sehen wir dieses Ergebnis:

IMG_3248

Wenn dir das kleine Tutorial gefallen hat, wird es bald einen zweiten Teil geben. In diesem werden wir die Materie tiefer behandeln.

Hast du noch ergänzende Tipps oder Fragen? Dann nur her damit!

2 Kommentare

Tutorials und Top Posts

2 Kommentare

Team23 PHP-Schulung - Javascript Girls rocken - Codeception Testing 12. August 2019 - 21:49

[…] echte Überraschung gesorgt. In dem praktischen Live Coding PHP-Training mit Roland Golla mit dem Codeception Testing Framework haben alle teilnehmenden Teams aus dem Bereichen E-Commerce mit Magento und […]

Reply
Mehr Leidenschaft durch Tests - Der Nerd im Endspiel - Grün! Grün! Grün! 17. September 2019 - 10:45

[…] gemeinsam mit der Funktastatur. So haben wir eine Menge Spaß und lernen gemeinsam neues Wissen zum Thema Testing mit Codeception kennen. Durch die Funktastatur, die im Kreis zu jedem im Developer-Team wechselt, werden alle Fragen […]

Reply

Gib uns Feedback

Diese Seite benutzt Cookies. Ein Akzeptieren hilft uns die Seite zu verbessern. Ok Mehr dazu