Cypress-armaturen: 5 belangrijke feiten die u moet weten

Een van de best practices in testautomatisering is het scheiden van de testgegevens van de testbestanden. Dit aspect is een van de belangrijkste vereisten bij het ontwerpen van een testkader. Cypress helpt ons de mogelijkheden om de testgegevens te scheiden met Cipres Armaturen. In dit onderwerp gaan we het hebben over: Cypress-armaturen met praktische implementatie en realtime voorbeelden

Inhoudsopgave

Wat is een armatuur in Cypress?

Cypress-armaturen kunnen worden gebruikt brongegevens van externe bestanden. Armaturen in Cypress helpen u om lezen van of schrijven naar bestanden. Een van de populaire frameworks in testautomatisering is een datagedreven framework waarbij we gegevens scheiden van de testbestanden. We bewaren de gegevens meestal in een extern bestand zoals Excel en lezen ze met behulp van externe bibliotheken. Cypress biedt ons dezelfde functie om gegevens uit bestanden te lezen.

Cypress biedt ons een map met de naam armaturen, waar we JSON-bestanden kunnen maken en er gegevens uit kunnen lezen, waar we die bestanden in meerdere testbestanden kunnen lezen. We slaan de gegevens op als: sleutel waarde koppelen en openen.

Hoe Cypress-armaturen gebruiken in tests?

We hebben toegang tot Cypress-armaturen via de volgende syntaxis die hieronder wordt gegeven:

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

We zullen de parameters begrijpen die kunnen worden doorgegeven in armaturen

bestandspad – het pad naar waar u uw testgegevens hebt opgeslagen

codering – De codering die wordt gebruikt tijdens het gebruik van een bestand. Sommige van de coderingen zijn ascii, base64, hex, binair enz.

opties – In opties kunnen we de . doorgeven time-out antwoord. Het is om de time-out op te geven die moet worden opgelost cy.armatuur()

Hoe gegevens uit Fixtures in Cypress lezen?

We zullen de testgegevens definiëren in een bestand onder de competitieprogramma map. We zullen toegang krijgen tot de testgegevens van het JSON-bestand in het testscript met behulp van Cypress-fixtures.

Laten we nu eens begrijpen voorbeeld voor Cypress armaturen. We loggen in op de url met de gebruikersnaam en het wachtwoord. Laten we dus de gebruikersnaam en het wachtwoord in een bestand opslaan.

Laten we een bestand maken met de naam referenties.json onder de armatuurmap. We zullen de variabelen in JSON-formaat definiëren.

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

Toegang tot de waarden van het armatuurbestand naar het testbestand

Aangezien we onze JSON-waarden hebben gedefinieerd in de referenties.json bestand, zullen we zien hoe we ze kunnen openen in ons testbestand met behulp van Cypress-armaturen.

We zullen toegang krijgen tot de armatuurgegevens met behulp van de this trefwoord in de before hook

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

In het bovenstaande voorbeeld hebben we toegang tot ons JSON-bestand via: cy.fixture('referenties'). Aangezien onze JSON-bestandsnaam is referenties.json, we zijn de bestandsnaam doorgeven in cy.fixture(). Nu gebruiken we het aliasconcept en definiëren we onze gegevens als testgegevens. Met de variabele testgegevens, we kunnen de waarden van gebruikersnaam en wachtwoord in ons testbestand gebruiken

description("Cypress Fixtures Voorbeeld", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) it("Log in met geldige inloggegevens ", function () { cy.visit(this.testdata.adminUrl) cy.get('[id=E-mail]').clear() cy.get('[id=E-mail]').type(this.testdata .gebruikersnaam) cy.get('[id=Wachtwoord]').clear() cy.get('[id=Wachtwoord]').type(this.testdata.password) cy.get('[type=submit] ').click(); cy.url().should('be.equal', this.testdata.adminUrl) }); });

Zoals je hierboven kunt zien, in .type() we geven de waarde van ons bestand credentials.json door als deze.testdata.gebruikersnaam. Evenzo hebben we voor wachtwoord toegang tot de waarde met behulp van dit.testdata.wachtwoord. Voor de url gebruiken we dezelfde manier als gebruikersnaam en wachtwoord.

Wanneer we de testcase uitvoeren, kunt u zien dat de waarde in het dashboard wordt afgedrukt. Op deze manier hebben we onze testcase uitgevoerd met Cypress Fixtures

repareren 2
Armatuur testresultaat

Cypress Meerdere armaturen

In deze sectie zullen we begrijpen hoe u Cypress-fixtures kunt gebruiken met meerdere fixture-bestanden.

Als we bijvoorbeeld verschillende fixturegegevens voor hetzelfde testbestand willen gebruiken, er zijn twee sets inloggegevens die we moeten verifiëren voor de inlogpagina, hoe kunnen we dan toegang krijgen tot de bestanden?

Een manier is om meerdere te schrijven it blokken die dezelfde code keer op keer repliceren. De andere manier, we kunnen gebruiken Cypress-armaturen om toegang te krijgen tot verschillende tests: gegevens in het specificatiebestand. Laten we eens kijken hoe we dat kunnen bereiken met Cypress-armaturen

We hebben al een fixture-bestand genaamd referenties.json.

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

Laten we nu een ander armatuurbestand maken met de naam userData.json waar we verschillende ongeldige gebruikersnaam en wachtwoord zullen gebruiken.

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

Laten we nu eens kijken hoe we toegang kunnen krijgen tot de twee verschillende gegevens in ons testbestand.

We zullen hetzelfde testbestand refactoren met de voorwaarde van het gebruik van twee verschillende fixture-bestanden.

const testValueFixtures = [ { "name": "credentials", "context": "1" }, { "name": "userData", "context": "2" } ] description('Automation Test Suite - Fixtures', function () { // door beide fixtues lopen testValueFixtures.forEach((fixtureData) => { description(fixtureData.context, () => { // toegang krijgen tot de testgegevens van het fixture-bestand ervoor (functie () { cy. armatuur(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.gebruikersnaam) cy.get('[id= Wachtwoord]').clear() cy.get('[id=Wachtwoord]').type(this.testData.password) cy.get('[type=submit]').click(); cy.url( ).should('be.equal', this.testData.adminUrl) }) }) }) })
repareren 3
Toegang tot twee armatuurgegevens voorbeeld

In eerste instantie maken we een variabele met de naam testValueFixtures als reeks waar we de context van twee fixture-bestanden maken. In de eerste context geven we de naam door als 'geloofsbrieven' en de tweede als 'gebruikersgegevens' , omdat ze onze JSON-bestandsnamen vertegenwoordigen waar we onze waarde hebben gedefinieerd.

Ten tweede doorlopen we de beide fixture-variabelen in het beschrijvingsblok. En zoals we eerder hebben besproken, hebben we toegang tot de gegevens die vóór blokkering zijn gebruikt .this()

De rest van de code is hetzelfde, waar we de gegevens doorgeven in de cy.get()

Wanneer we onze test uitvoeren, wordt deze in twee sets uitgevoerd, waarbij de eerste case slaagt met geldige inloggegevens en de tweede mislukt vanwege ongeldige inloggegevens

repareren 4
Armatuur met behulp van het eerste armatuurbestand

Zoals je hierboven in de snapshot kunt zien, is de eerste testcase geslaagd en heeft deze de waarde van het eerste fixture-bestand ingevoerd referenties.json

repareren 5
Fixture-voorbeeld met behulp van het tweede fixture-bestand

Zoals je kunt zien in de bovenstaande schermafbeelding, is de test mislukt en zijn de doorgegeven waarden afkomstig uit het tweede armatuurbestand userData.json

U kunt ook zien hoe u Cypress-fixtures schrijft met behulp van het Page Object Model hier