Ich schreibe Automatisierungstests mit Codeception-Framework. Ich habe einen Testfall, der einige Funktionen nach der Anmeldung des Benutzers überprüft. Es gibt etwa 20 Testfälle mit unterschiedlichen Funktionen. Alle Testfälle benötigen einen Benutzer, um sich am System anzumelden, also habe ich eine Login-Funktionalität unter _vor dem Rückruf geschrieben. Wenn ich alle Testfälle ausführe, wird vor jeder Testfall-Login-Funktion geprüft, was viel Zeit in Anspruch nimmt. Können wir Login-Funktionalität als Vorbedingung schreiben und wenn der Benutzer eingeloggt ist, sollten alle Testfälle ausgeführt werden?Codeception Testfälle Voraussetzung
1
A
Antwort
1
Sie können sogenannte Helfer in der Codeception verwenden. Sie können einen Helfer mit dem folgenden Befehl erzeugen:
<?php
namespace Helper;
// here you can define custom actions
// all public methods declared in helper class will be available in $I
class Login extends \Codeception\Module
{
public function login($username, $password)
{
/** @var \Codeception\Module\WebDriver $webDriver */
$webDriver = $this->getModule('WebDriver');
// if snapshot exists - skipping login
if ($webDriver->loadSessionSnapshot('login')) {
return;
}
// logging in
$webDriver->amOnPage('/login');
$webDriver->submitForm('#loginForm', [
'login' => $username,
'password' => $password
]);
$webDriver->see($username, '.navbar');
// saving snapshot
$webDriver->saveSessionSnapshot('login');
}
}
Siehe http://codeception.com/docs/06-ReusingTestCode#session-snapshot für weitere Informationen über Schnappschüsse:
vendor/bin/codecept generate:helper Login
Dann sind Sie in einem Benutzer wie so ein Verfahren in die Klasse für die Protokollierung setzen könnten .
Ihre acceptance.suite.yml sollte wie folgt aussehen:
# Codeception Test Suite Configuration
#
# Suite for acceptance tests.
# Perform tests in browser using the WebDriver or PhpBrowser.
# If you need both WebDriver and PHPBrowser tests - create a separate suite.
class_name: AcceptanceTester
modules:
enabled:
# Note we must use WebDriver for us to use session snapshots
- WebDriver:
url: http://localhost/myapp
browser: chrome
- \Helper\Acceptance
# Note that we must add the Login Helper class we generated here
- \Helper\Login
Jetzt haben wir eine Hilfsklasse, die in allen unseren Tests wiederverwendet werden können. Lassen Sie uns ein Beispiel an:
<?php
class UserCest
{
// tests
public function testUserCanLogin(AcceptanceTester $I)
{
$I->login('username', 'password');
}
public function testUserCanCarryOutTask(AcceptanceTester $I)
{
$I->login('username', 'password');
$I->amOnPage('/task-page');
$I->see('Task Page');
// other assertions below
}
public function testUserCanCarryOutAnotherTask(AcceptanceTester $I)
{
$I->login('username', 'password');
$I->amOnPage('/another-task-page');
$I->see('Another Task Page');
// other assertions below
}
}
Nun, wenn die UserCest Test läuft, ist es nur ein einziges Mal den Benutzer anmelden sollte.
Verwandte Themen
- 1. Bundle-Setup innerhalb der Codeception
- 2. Codeception ignoriert "erforderlich" von Eingabefeldern
- 3. Codeception Namespaces
- 4. .Net 2.0 Voraussetzung Installer
- 5. Clickonce Update-Installation Voraussetzung
- 6. verkettete MSIs/Bootstrapper/Voraussetzung?
- 7. Liquibase Voraussetzung MARK_RAN Unzulässig
- 8. Zielname in Makefile Voraussetzung
- 9. Apache Karaf verfügen Voraussetzung
- 10. Include generischen Testfall in Codeception
- 11. Dynamische Testfälle
- 12. Voraussetzung in einem Use Case
- 13. Seite mit Codeception vergrößern?
- 14. Codeception Codecoverage von Abnahmetests
- 15. Codeception webdriver in Windows
- 16. Codeception neue JsonTypes hinzufügen
- 17. Codeception AcceptanceTester :: loadSessionSnapshot undefiniert
- 18. Test Datenbank und Codeception
- 19. Logging Codeception Fehler
- 20. Codeception Option auswählen
- 21. Verwendung verschiedener Codeception Umgebungen
- 22. Codeception Symfony Click-Problem
- 23. Codeception DB-Modul Ausnahme
- 24. Codeigniter 2 und Codeception
- 25. Codeception, Laravel testet Akzeptanz
- 26. Codeception. Schauspieler Klassen geladen
- 27. Testfälle in einer separaten Datei für Vorlagen-Testfälle
- 28. JUnit-Testfälle für Config
- 29. Karma Lauf Testfälle Doppel
- 30. Karma-Testfälle: Fokus-Ereignis