Status erstellen:
Appium Helper:
Web -Helfer:
Referenz: Helfer API
CodeCeptJS ist ein neues Test-Framework für End-to-End-Tests mit Webdriver (oder anderen). Es ist die Browser -Interaktion mit einfachen Schritten abstrahiert, die aus Sicht eines Benutzers geschrieben wurden. Ein einfacher Test, der den Text "Willkommen" überprüft, ist auf einer Hauptseite einer Site aussehen:
Feature ( 'CodeceptJS demo' ) ;
Scenario ( 'check Welcome page on site' , ( { I } ) => {
I . amOnPage ( '/' ) ;
I . see ( 'Welcome' ) ;
} ) ;CodeCeptJS -Tests sind:
I . Das macht das Lesen, Schreiben und Aufrechterhalten von Tests auch für Nicht-Tech-Personen. CodeCeptJS verwendet Helfermodule , um I -Objekt Aktionen bereitzustellen. Derzeit hat CodeCeptJS folgende Helfer:
Und noch mehr zu kommen ...
CodeCeptJS ist Nachfolger von Codecception, einem beliebten Full-Stapel-Test-Framework für PHP. Mit CodeCeptJs sind Ihre szenariogesteuerten Funktions- und Akzeptanztests so einfach und sauber wie möglich. Sie müssen sich keine Sorgen um die asynchrone Natur von NodeJs oder verschiedene Apis von Dramatikern, Selen, Puppenspieler, Testcafe usw. machen, da CodeceptJs sie vereint und dazu bringt, so synchron zu sein.
npm i codeceptjs --saveWechseln Sie zum Verzeichnis, in dem Sie Ihre Tests (und CodeCeptJS -Konfiguration) speichern lassen möchten, und führen Sie aus:
npx codeceptjs initTestumgebung erstellen und konfigurieren. Es wird empfohlen, Webdriver aus der Liste der Helfer auszuwählen, wenn Sie Selenium -Webdriver -Tests schreiben müssen.
Danach erstellen Sie Ihren ersten Test durch Ausführung:
npx codeceptjs generate:testJetzt wird der Test erstellt und kann mit ausgeführt werden
npx codeceptjs runWenn Sie Ihre Tests mit TypeScript schreiben möchten, generieren Sie einfach Standardtypdefinitionen, indem Sie ausführen:
npx codeceptjs def .Später können Sie sogar automatisch die Typdefinitionen aktualisieren, um Ihre eigenen Methoden für benutzerdefinierte Helpers einzuschließen.
Notiz:
12+ oder höher. Lernen Sie CodeCeptJs anhand von Beispielen. Nehmen wir an, wir haben CodeCeptJs installiert und Webdriver -Helfer aktiviert.
Mal sehen, wie wir mit grundlegenden Formestests umgehen können:
Feature ( 'CodeceptJS Demonstration' ) ;
Scenario ( 'test some forms' , ( { I } ) => {
I . amOnPage ( 'http://simple-form-bootstrap.plataformatec.com.br/documentation' ) ;
I . fillField ( 'Email' , '[email protected]' ) ;
I . fillField ( 'Password' , secret ( '123456' ) ) ;
I . checkOption ( 'Active' ) ;
I . checkOption ( 'Male' ) ;
I . click ( 'Create User' ) ;
I . see ( 'User is valid' ) ;
I . dontSeeInCurrentUrl ( '/documentation' ) ;
} ) ; Alle Aktionen werden von I -Objekt ausgeführt. Behauptungen Funktionen beginnen mit see -Funktion. In diesen Beispielen werden alle Methoden von I aus dem Webdriver -Helfer entnommen, um zu erfahren, wie man sie verwendet.
Lassen Sie uns diesen Test mit dem Befehl run ausführen. Zusätzliche Option --steps zeigen uns den Laufprozess. Wir empfehlen, während der Entwicklung --steps oder --debug zu verwenden.
npx codeceptjs run --stepsDies erzeugt eine Ausgabe:
CodeceptJS Demonstration --
test some forms
• I am on page " http://simple-form-bootstrap.plataformatec.com.br/documentation "
• I fill field " Email " , " [email protected] "
• I fill field " Password " , " **** "
• I check option " Active "
• I check option " Male "
• I click " Create User "
• I see " User is valid "
• I dont see in current url " /documentation "
✓ OK in 17752ms CodeCeptJS hat eine ultimative Funktion, mit der Sie Ihren Test entwickeln und debuggen. Sie können die Ausführung des Tests an jedem Ort pausieren und interaktive Shell verwenden, um verschiedene Aktionen und Locators auszuprobieren. Fügen Sie einfach pause() an jedem Ort in einem Test hinzu und führen Sie ihn aus.
Interaktive Shell kann durch Ausführen außerhalb des Testkontexts gestartet werden:
npx codeceptjs shell Wir füllten das Formular mit fillField -Methoden, die Formelemente nach ihrem Etikett lokalisierten. Auf die gleiche Weise können Sie Elemente mit Namen, CSS oder XPath -Locators in Tests finden:
// by name
I . fillField ( 'user_basic[email]' , '[email protected]' ) ;
// by CSS
I . fillField ( '#user_basic_email' , '[email protected]' ) ;
// don't make us guess locator type, specify it
I . fillField ( { css : '#user_basic_email' } , '[email protected]' ) ; Andere Methoden wie checkOption und click auf ähnliche Weise. Sie können Etiketten oder CSS- oder XPath -Locators einnehmen, um Elemente für die Interaktion zu finden.
Behauptungen beginnen mit dem Präfix see oder dontSee . In unserem Fall behaupten wir, dass der String 'Benutzer ist gültig' irgendwo in einer Webseite. Wir können die Suche jedoch auf ein bestimmtes Element einschränken, indem wir einen zweiten Parameter bereitstellen:
I . see ( 'User is valid' ) ;
// better to specify context:
I . see ( 'User is valid' , '.alert-success' ) ; In diesem Fall wird die Zeichenfolge „Benutzer ist gültig“ nur in Elementen durchsucht, die von CSS .alert-success gefunden wurden.
Falls Sie einen Wert von einer Webseite zurückgeben und direkt im Test verwenden müssen, sollten Sie Methoden mit grab -Präfix verwenden. Es wird erwartet, dass sie in async/await -Funktionen verwendet werden, und ihre Ergebnisse werden im Test verfügbar sein:
Feature ( 'CodeceptJS Demonstration' ) ;
Scenario ( 'test page title' , async ( { I } ) => {
I . amOnPage ( 'http://simple-form-bootstrap.plataformatec.com.br/documentation' ) ;
const title = await I . grabTitle ( ) ;
I . expectEqual ( title , 'Example application with SimpleForm and Twitter Bootstrap' ) ; // Avaiable with Expect helper. -> https://codecept.io/helpers/Expect/
} ) ;Genauso wie können Sie Text, Attribute oder Formwerte in den nächsten Testschritten erfassen.
Häufige Vorbereitungsschritte wie das Öffnen einer Webseite, die Anmeldung in einem Benutzer können Before oder im Background platziert werden:
const { I } = inject ( ) ;
Feature ( 'CodeceptJS Demonstration' ) ;
Before ( ( ) => { // or Background
I . amOnPage ( 'http://simple-form-bootstrap.plataformatec.com.br/documentation' ) ;
} ) ;
Scenario ( 'test some forms' , ( ) => {
I . click ( 'Create User' ) ;
I . see ( 'User is valid' ) ;
I . dontSeeInCurrentUrl ( '/documentation' ) ;
} ) ;
Scenario ( 'test title' , ( ) => {
I . seeInTitle ( 'Example application' ) ;
} ) ; CodeCeptJS bietet die einfachste Möglichkeit, Seitenobjekte in Ihrem Test zu erstellen und zu verwenden. Sie können einen erstellen, indem Sie ausgeführt werden
npx codeceptjs generate pageobject Es wird eine Seitenobjektdatei für Sie erstellt und der Konfiguration hinzugefügt. Nehmen wir an, wir haben einen namens docsPage erstellt:
const { I } = inject ( ) ;
module . exports = {
fields : {
email : '#user_basic_email' ,
password : '#user_basic_password'
} ,
submitButton : { css : '#new_user_basic input[type=submit]' } ,
sendForm ( email , password ) {
I . fillField ( this . fields . email , email ) ;
I . fillField ( this . fields . password , password ) ;
I . click ( this . submitButton ) ;
}
}Sie können es problemlos zum Testen injizieren, indem Sie seinen Namen in Testargumenten angeben:
Feature ( 'CodeceptJS Demonstration' ) ;
Before ( ( { I } ) => { // or Background
I . amOnPage ( 'http://simple-form-bootstrap.plataformatec.com.br/documentation' ) ;
} ) ;
Scenario ( 'test some forms' , ( { I , docsPage } ) => {
docsPage . sendForm ( '[email protected]' , '123456' ) ;
I . see ( 'User is valid' ) ;
I . dontSeeInCurrentUrl ( '/documentation' ) ;
} ) ; Ersetzen Sie bei Verwendung von TypeScript module.exports durch die automatische Vervollständigung mit export .
Davertmik | kobenguyent | Vorobeyko | Reubenmiller |
Arhell | Apshenkin | Fabioel | Pablopaul |
Mirao | GeorgeGriff | Kmkoushik | Nikocanvacom |
Elukoyanov | Thomashohn | Gkushang | Tsuemura |
Egorbodnar | Vikalpp | Elaichenkov | Borisosipov |
ngraf | Nitschsb | Hubidu | JPLOSKONKA |
Maojunxyz | Abhimanyupandian | Martomo | Hatufacci |
MIT © CodeCeptJS -Team