Cypres-armaturer: 5 vigtige fakta, du bør vide

En af de bedste fremgangsmåder inden for testautomatisering er at adskille testdataene fra testfilerne. Dette aspekt er et af de primære krav under design af testramme. Cypress hjælper os med evnerne til at adskille testdataene med Cypress inventar. I dette emne vil vi diskutere om Cypres-armaturer med praktisk implementering og eksempler i realtid

Indholdsfortegnelse

Hvad er et armatur i Cypress?

Cypres Fixtures kan bruges kildedata fra eksterne filer. Armaturer i Cypress hjælper dig med at læse fra eller skrive i filer. Et af de populære rammer inden for testautomatisering er datadrevet framework, hvor vi adskiller data fra testfilerne. Vi opbevarer normalt dataene i eksterne filer som Excel og læser dem ved hjælp af eksterne biblioteker. Cypress giver os den samme funktion til at læse data fra filer.

Cypress giver os en mappe kaldet inventar, hvor vi kan oprette JSON-filer og læse data fra dem, hvor vi kan læse disse filer i flere testfiler. Vi gemmer dataene som nøgleværdi parre og få adgang til dem.

Hvordan bruger man Cypress Fixtures i tests?

Vi kan få adgang til Cypress-armaturer via følgende syntaks nedenfor

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

Vi vil forstå de parametre, der kan overføres i armaturer

filsti – stien til hvor du har gemt dine testdata

kodning – Den kodning, der bruges under brug af en fil. Nogle af kodningerne er ascii, base64, hex, binær osv

optioner – I optioner kan vi bestå timeout respons. Det er for at angive timeout for at løse cy.fixture ()

Hvordan læser man data fra Fixtures in Cypress?

Vi vil definere testdataene i en fil under armatur folder. Vi vil få adgang til testdataene fra JSON-filen i testscriptet ved hjælp af Cypress-armaturer.

Lad os nu forstå en eksempel for Cypres inventar. Vi logger på url'en med brugernavn og adgangskode. Så lad os gemme brugernavn og adgangskodeværdier i en fil.

Lad os oprette en fil med navnet legitimationsoplysninger.json under armaturets mappe. Vi vil definere variablerne i JSON-format.

{
    "username" : "[email protected]",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
rettelse 1
Eksempel på fixturfil

Adgang til værdierne fra fixturfilen til testfilen

Da vi har defineret vores JSON-værdier i legitimationsoplysninger.json fil, vil vi se, hvordan vi kan få adgang til dem i vores testfil ved hjælp af Cypress-armaturer.

Vi får adgang til armaturets data ved hjælp af this søgeord i før-krogen

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

I ovenstående eksempel får vi adgang til vores JSON-fil via cy.fixture('legitimationsoplysninger'). Da vores JSON-filnavn er legitimationsoplysninger.json, vi er sende filnavnet i cy.fixture(). Nu bruger vi alias koncept og definerer vores data som testdatoer. Med variablen testdatoer, kan vi bruge værdierne for brugernavn og adgangskode i vores testfil

describe("Cypress Fixtures Eksempel", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) it("Login med gyldige legitimationsoplysninger ", funktion () { cy.visit(this.testdata.adminUrl) cy.get('[id=Email]').clear() cy.get('[id=Email]').type(this.testdata .brugernavn) 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) }); });

Som du kan se ovenfor, i .type() vi videregiver værdien fra vores credentials.json fil som dette.testdata.brugernavn. Tilsvarende, for adgangskode, vi får adgang til værdien ved hjælp af denne.testdata.adgangskode. For url'en bruger vi på samme måde som brugernavn og adgangskode.

Når vi kører testcasen, kan du se værdien blive udskrevet i dashboardet. På denne måde har vi udført vores testcase ved hjælp af Cypress Fixtures

rettelse 2
Resultat af armaturtest

Cypress flere armaturer

I dette afsnit vil vi forstå, hvordan man bruger Cypress Fixtures med flere fixturfiler.

Hvis vi f.eks. ønsker at bruge forskellige opspændingsdata til den samme testfil, er der to sæt legitimationsoplysninger, vi skal verificere for login-siden, hvordan kan vi så få adgang til filerne?

En måde er at skrive flere it blokke, som vil replikere den samme kode igen og igen. Den anden vej kan vi bruge Cypres-armaturer for at få adgang til forskellige test data i spec-filen. Lad os se, hvordan vi kan opnå det ved at bruge Cypress-armaturer

Vi har allerede en opstillingsfil kaldet legitimationsoplysninger.json.

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

Lad os nu oprette en anden fixturfil med navnet userData.json hvor vi vil bruge forskellige ugyldige brugernavn og adgangskode.

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

Lad os nu se, hvordan vi kan få adgang til de to forskellige data i vores testfil.

Vi refaktoriserer den samme testfil ved at bruge betingelsen om at bruge to forskellige fixturfiler.

const testValueFixtures = [ { "name": "credentials", "context": "1" }, { "name": "userData", "context": "2" } ] describe('Automation Test Suite - Fixtures', function () { //looping through both fixtues testValueFixtures.forEach((fixtureData) => { describe(fixtureData.context, () => { // adgang til testdata fra fixturfilen 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=Email]').clear() cy.get('[id=Email]').type(this.testData.username) cy.get('[id= Adgangskode]').clear() cy.get('[id=Password]').type(this.testData.password) cy.get('[type=submit]').click(); cy.url( ).should('be.equal', this.testData.adminUrl) }) }) }) })
rettelse 3
Eksempel på adgang til to armaturersdata

I første omgang opretter vi en variabel kaldet testValueFixtures som en matrix hvor vi opretter konteksten af ​​to fixturfiler. I den første sammenhæng videregiver vi navnet som 'Legitimationsoplysninger' og den anden som 'brugerdata', da de repræsenterer vores JSON-filnavne, hvor vi har vores værdi defineret.

For det andet gennemgår vi begge fixturvariablerne i describe-blokken. Og som vi diskuterede tidligere, får vi adgang til dataene inden blokering .this()

Resten af ​​koden er den samme, hvor vi sender dataene i cy.get()

Når vi udfører vores test, vil den køre i to sæt, hvor den første sag består med gyldige legitimationsoplysninger, og den anden mislykkes på grund af ugyldige legitimationsoplysninger

rettelse 4
Fixtur ved hjælp af den første fixturfil

Som du kan se ovenfor på snapshotet, er den første testcase bestået, og den har indtastet værdien fra den første fixturfil legitimationsoplysninger.json

rettelse 5
Fixtureksempel ved hjælp af den anden fixturfil

Som du kan se på ovenstående skærmbillede, er testen mislykket, og de beståede værdier er fra den anden fixturfil userData.json

Du kan også se, hvordan man skriver Cypress-armaturer ved hjælp af Page Object Model link.