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?
- Hvordan bruger man Cypress armaturer i tests?
- Hvordan læser man data fra armaturer i Cypress?
- Adgang til værdierne fra fixturfilen til testfilen
- Cypres Flere armaturer
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/"
}
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
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) }) }) }) })
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
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
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.
Hej...Jeg er Aishwarya Lakshmi, afsluttede min B.Tech og har næsten 2+ års erfaring i testdomænet. Jeg er en testentusiast og brænder for at teste og elsker at udforske nye ting inden for mit felt og dele dem med mine jævnaldrende. Jeg nyder at skrive blogs i min fritid på den enkleste, men effektive måde. Som tester kan jeg godt lide at have tingene til perfektion, så jeg ønsker, at mine læsere har den perfekte forståelse af teknologien. Jeg holder mig opdateret med de nye teknologier relateret til test og bruger tid på at forstå dem. Jeg er glad for at hjælpe eleverne med at forstå begreberne i test.