Infissi Cypress: 5 fatti importanti che dovresti sapere

Una delle migliori pratiche nell'automazione dei test consiste nel separare i dati dei test dai file di test. Questo aspetto è uno dei requisiti principali durante la progettazione del framework di test. Cypress ci aiuta le capacità di separare i dati del test con Cipresso infissi. In questo argomento parleremo di Apparecchi Cypress con implementazione pratica ed esempi in tempo reale

Sommario

Che cos'è un appuntamento fisso a Cypress?

È possibile utilizzare gli infissi in cipresso dati di origine da file esterni. Gli infissi in Cypress ti aiutano a leggere da o scrivere in file. Uno dei framework più diffusi nell'automazione dei test è il framework basato sui dati in cui separiamo i dati dai file di test. Di solito conserviamo i dati in file esterni come Excel e li leggiamo utilizzando librerie esterne. Cypress ci fornisce la stessa funzione per leggere i dati dai file.

Cypress ci fornisce una cartella chiamata infissi, dove possiamo creare file JSON e leggere dati da esso dove possiamo leggere quei file in più file di test. Conserveremo i dati come valore-chiave accoppiare e accedervi.

Come utilizzare gli infissi Cypress nei test?

Possiamo accedere agli apparecchi Cypress tramite la seguente sintassi indicata di seguito

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

Capiremo i parametri che possono essere passati negli infissi

percorso del file – il percorso in cui hai archiviato i dati del test

codifica – La codifica utilizzata durante l'utilizzo di un file. Alcune delle codifiche sono ascii, base64,hex,binary ecc

Opzioni – Nelle opzioni, possiamo passare il timeout risposta. È per specificare il timeout da risolvere cy.apparecchio()

Come leggere i dati da Fixtures in Cypress?

Definiremo i dati del test in un file sotto il fixture cartella. Accederemo ai dati del test dal file JSON nello script del test utilizzando i dispositivi Cypress.

Ora, comprendiamo un esempio per Cipresso infissi. Accederemo all'URL utilizzando il nome utente e la password. Quindi memorizziamo i valori di nome utente e password in un file.

Creiamo un file chiamato credenziali.json sotto la cartella del dispositivo. Definiremo le variabili in formato JSON.

{
    "username" : "[email protected]",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
correggere 1
Esempio di file del dispositivo

Accesso ai valori dal file Fixture al file di test

Poiché abbiamo definito i nostri valori JSON nel credenziali.json file, vedremo come possiamo accedervi nel nostro file di test utilizzando i dispositivi Cypress.

Accederemo ai dati delle partite utilizzando il this parola chiave nell'aggancio precedente

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

Nell'esempio sopra, stiamo accedendo al nostro file JSON tramite cy.fixture('credenziali'). Poiché il nome del nostro file JSON è credenziali.json, noi siamo passando il nome del file in cy.fixture(). Ora stiamo usando il concetto di alias e definendo i nostri dati come dati di test. Con la variabile dati di test, possiamo usare i valori di username e password nel nostro file di test

describe("Esempio di Cypress Fixtures", function() { before(function() { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) it("Accedi con credenziali valide ", 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) }); });

Come puoi vedere sopra, in .type() stiamo passando il valore dal nostro file credenziali.json come questo.testdata.nomeutente. Allo stesso modo, per la password stiamo accedendo al valore usando questa.password.testdata. Per l'URL, usiamo allo stesso modo di nome utente e password.

Quando eseguiamo il test case, puoi vedere il valore stampato nella dashboard. In questo modo, abbiamo eseguito il nostro test case utilizzando Cypress Fixtures

correggere 2
Risultato del test del dispositivo

Infissi multipli di Cypress

In questa sezione, capiremo come utilizzare Cypress Fixtures con più file di fixture.

Se vogliamo utilizzare dati di attrezzature diversi per lo stesso file di test, ad esempio, ci sono due set di credenziali che dobbiamo verificare per la pagina di accesso, come possiamo accedere ai file?

Un modo è scriverne più di uno it blocchi che replicheranno lo stesso codice ancora e ancora. L'altro modo, possiamo usare Apparecchi Cypress per accedere a diversi test dati nel file delle specifiche. Vediamo come possiamo ottenerlo usando i dispositivi Cypress

Abbiamo già un file fixture chiamato credenziali.json.

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

Ora creiamo un altro file fixture chiamato userData.json dove utilizzeremo un nome utente e una password diversi non validi.

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

Ora vediamo come possiamo accedere ai due diversi dati nel nostro file di test.

Eseguiremo il refactoring dello stesso file di test utilizzando la condizione di utilizzare due diversi file di fissaggio.

const testValueFixtures = [ { "name": "credentials", "context": "1" }, { "name": "userData", "context": "2" } ] describe('Automation Test Suite - Fixtures', function () { //esegue il ciclo di entrambi i dispositivi testValueFixtures.forEach((fixtureData) => { describe(fixtureData.context, () => { // accede ai dati di test dal file del dispositivo prima di(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= Password]').clear() cy.get('[id=Password]').type(this.testData.password) cy.get('[type=submit]').click(); cy.url( ).should('be.equal', this.testData.adminUrl) }) }) }) })
correggere 3
Esempio di accesso a due dati di apparecchiature

Inizialmente, stiamo creando una variabile chiamata testValueFixtures come schieramento dove stiamo creando il contesto di due file fixture. Nel primo contesto, stiamo passando il nome come 'Credenziali' e il secondo come 'dati utente' , in quanto rappresentano i nostri nomi di file JSON in cui abbiamo definito il nostro valore.

In secondo luogo, stiamo scorrendo entrambe le variabili del dispositivo nel blocco di descrizione. E come abbiamo discusso in precedenza, stiamo accedendo ai dati prima del blocco utilizzando .this()

Il resto del codice è lo stesso, dove stiamo passando i dati nel cy.get()

Quando eseguiamo il nostro test, verrà eseguito in due set in cui il primo caso passa con credenziali valide e il secondo fallisce a causa di credenziali non valide

correggere 4
Dispositivo che utilizza il primo file di dispositivo

Come puoi vedere sopra nell'istantanea, il primo test case è passato ed è stato inserito il valore dal primo file fixture credenziali.json

correggere 5
Esempio di dispositivo utilizzando il secondo file di dispositivo

Come puoi vedere nello screenshot qui sopra, il test è fallito e i valori superati provengono dal secondo file del dispositivo userData.json

Puoi anche vedere come scrivere i dispositivi Cypress usando il Page Object Model qui