Cypress Fixtures: 5 wichtige Fakten, die Sie kennen sollten

Eine der Best Practices in der Testautomatisierung besteht darin, die Testdaten von den Testdateien zu trennen. Dieser Aspekt ist eine der Hauptanforderungen beim Entwerfen von Testframeworks. Cypress hilft uns bei der Trennung der Testdaten mit Zypresse Vorrichtungen. In diesem Thema werden wir darüber diskutieren Cypress Fixtures mit praktischer Implementierung und Echtzeitbeispielen

Inhaltsverzeichnis

Was ist ein Fixture in Cypress?

Cypress Fixtures können verwendet werden Quelldaten aus externen Dateien. Fixtures in Cypress helfen Ihnen dabei aus Dateien lesen oder in Dateien schreiben. Eines der beliebtesten Frameworks in der Testautomatisierung ist das datengesteuerte Framework, bei dem wir Daten von den Testdateien trennen. Wir halten die Daten normalerweise in einer externen Datei wie Excel und lesen sie mit externen Bibliotheken. Cypress bietet uns die gleiche Funktion zum Lesen von Daten aus Dateien.

Cypress stellt uns einen Ordner namens . zur Verfügung Armaturen, wo wir JSON-Dateien erstellen und Daten daraus lesen können, wo wir diese Dateien in mehreren Testdateien lesen können. Wir speichern die Daten als Schlüsselwert koppeln und darauf zugreifen.

Wie verwendet man Cypress Fixtures in Tests?

Wir können auf Cypress-Fixtures über die folgende Syntax zugreifen, die unten angegeben ist

cy.fixture(filePath)
cy.fixture(filePath, encoding)
cy.fixture(filePath, options)
cy.fixture(filePath, encoding, options)

Wir werden die Parameter verstehen, die in Fixtures übergeben werden können

Dateipfad – den Pfad, wo Sie Ihre Testdaten gespeichert haben

Codierung – Die Codierung, die bei der Verwendung einer Datei verwendet wird. Einige der Kodierungen sind ASCII, base64,hex,binary etc.

Optionen – In Optionen können wir die Timeout Antwort. Es ist die Zeitüberschreitung für die Auflösung anzugeben cy.fixture()

Wie lese ich Daten von Fixtures in Cypress?

Die Testdaten werden wir in einer Datei unter dem Befestigung Mappe. Wir greifen auf die Testdaten aus der JSON-Datei im Testskript mit Cypress-Fixtures zu.

Lassen Sie uns nun ein verstehen Beispiel für Zypresse Vorrichtungen. Wir melden uns in der URL mit dem Benutzernamen und dem Passwort an. Lassen Sie uns also den Benutzernamen und das Passwort in einer Datei speichern.

Lassen Sie uns eine Datei namens . erstellen Anmeldedaten.json unter dem Geräteordner. Wir werden die Variablen im JSON-Format definieren.

{
    "username" : "[email protected]",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
1 beheben
Beispiel für eine Fixture-Datei

Zugriff auf die Werte aus der Fixture-Datei in die Testdatei

Da wir unsere JSON-Werte in der Anmeldedaten.json Datei, wir werden sehen, wie wir in unserer Testdatei mit Cypress Fixtures darauf zugreifen können.

Wir greifen auf die Fixture-Daten über die this Stichwort im Vorhaken

description("Cypress Fixtures Example", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) })

Im obigen Beispiel greifen wir auf unsere JSON-Datei über . zu cy.fixture('Anmeldeinformationen'). Da unser JSON-Dateiname ist Anmeldedaten.json, wir sind Übergabe des Dateinamens in cy.fixture(). Jetzt verwenden wir das Alias-Konzept und definieren unsere Daten als Testdaten. Mit der Variablen Testdaten, können wir die Werte von Benutzername und Passwort in unserer Testdatei verwenden

description("Cypress Fixtures Example", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) it("Melden Sie sich mit gültigen Anmeldedaten an ", function () { cy.visit(this.testdata.adminUrl) cy.get('[id=Email]').clear() cy.get('[id=Email]').type(this.testdata .username) cy.get('[id=Password]').clear() cy.get('[id=Password]').type(this.testdata.password) cy.get('[type=submit] ').click(); cy.url().should('be.equal', this.testdata.adminUrl) }); });

Wie Sie oben sehen können, in .type() Wir übergeben den Wert aus unserer Datei Credentials.json als this.testdata.username. In ähnlicher Weise greifen wir für das Passwort mit auf den Wert zu dieses.testdaten.passwort. Für die URL verwenden wir den gleichen Weg wie Benutzername und Passwort.

Wenn wir den Testfall ausführen, können Sie sehen, wie der Wert im Dashboard gedruckt wird. Auf diese Weise haben wir unseren Testfall mit Cypress Fixtures ausgeführt

2 beheben
Ergebnis des Gerätetests

Cypress Mehrere Geräte

In diesem Abschnitt erfahren Sie, wie Sie Cypress Fixtures mit mehreren Fixture-Dateien verwenden.

Wenn wir beispielsweise unterschiedliche Fixture-Daten für dieselbe Testdatei verwenden möchten, müssen wir zwei Anmeldeinformationen für die Anmeldeseite überprüfen. Wie können wir dann auf die Dateien zugreifen?

Eine Möglichkeit besteht darin, mehrere zu schreiben it Blöcke, die denselben Code immer wieder replizieren. Den anderen Weg können wir nutzen Cypress-Vorrichtungen für den Zugriff auf verschiedene Tests Daten in der spec-Datei. Lassen Sie uns sehen, wie wir das mit Cypress-Leuchten erreichen können

Wir haben bereits eine Fixture-Datei namens Anmeldedaten.json.

{
    "username" : "[email protected]",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}

Lassen Sie uns nun eine weitere Fixture-Datei namens . erstellen userData.json wo wir verschiedene ungültige Benutzernamen und Passwörter verwenden.

{
    "username" : "[email protected]",
    "password" : "user",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}

Sehen wir uns nun an, wie wir auf die beiden unterschiedlichen Daten in unserer Testdatei zugreifen können.

Wir werden dieselbe Testdatei unter der Bedingung umgestalten, dass wir zwei verschiedene Gerätedateien verwenden.

const testValueFixtures = [ { "name": "credentials", "context": "1" }, { "name": "userData", "context": "2" } ] description('Automation Test Suite - Fixtures', function () { // beide Fixtures durchlaufen testValueFixtures.forEach((fixtureData) => { description(fixtureData.context, () => { // Zugriff auf die Testdaten aus der Fixture-Datei before(function () { cy. Fixture(FixtureData.name).then(function (testData) { this.testData = testData; }) }) it("login", function () { cy.visit('https://admin-demo.nopcommerce.com /admin/') cy.get('[id=E-Mail]').clear() cy.get('[id=E-Mail]').type(this.testData.username) cy.get('[id= Passwort]').clear() cy.get('[id=Passwort]').type(this.testData.password) cy.get('[type=submit]').click(); cy.url( ).should('be.equal', this.testData.adminUrl) }) }) }) })
3 beheben
Beispiel für den Zugriff auf zwei Fixture-Daten

Zunächst erstellen wir eine Variable namens testValueFixtures als Array wo wir den Kontext von zwei Fixture-Dateien erstellen. Im ersten Kontext übergeben wir den Namen als 'Beglaubigungsschreiben' und die zweite als 'Benutzerdaten' , da sie unsere JSON-Dateinamen darstellen, in denen wir unseren Wert definiert haben.

Zweitens durchlaufen wir die beiden Fixture-Variablen im describe-Block. Und wie wir bereits besprochen haben, greifen wir auf die Daten zu, bevor wir sie blockieren .this()

Der Rest des Codes ist derselbe, wobei wir die Daten im cy.get()

Wenn wir unseren Test ausführen, wird er in zwei Sätzen ausgeführt, wobei der erste Fall mit gültigen Anmeldeinformationen erfolgreich ist und der zweite aufgrund ungültiger Anmeldeinformationen fehlschlägt

4 beheben
Fixture mit der ersten Fixture-Datei

Wie Sie oben im Snapshot sehen können, ist der erste Testfall bestanden und es wurde der Wert aus der ersten Fixture-Datei eingegeben Anmeldedaten.json

5 beheben
Fixture-Beispiel mit der zweiten Fixture-Datei

Wie Sie im obigen Screenshot sehen können, ist der Test fehlgeschlagen und die bestandenen Werte stammen aus der zweiten Fixture-Datei userData.json

Sie können auch sehen, wie man Cypress Fixtures mit dem Page Object Model schreibt hier