Luminaires Cypress : 5 faits importants à connaître

L'une des meilleures pratiques en matière d'automatisation des tests consiste à séparer les données de test des fichiers de test. Cet aspect est l'une des principales exigences lors de la conception du cadre de test. Cypress nous aide à séparer les données de test avec Cyprès Agencements. Dans ce sujet, nous parlerons de Appareils Cypress avec mise en œuvre pratique et exemples en temps réel

Table des matières

Qu'est-ce qu'un luminaire dans Cypress?

Les luminaires Cypress peuvent être utilisés source de données à partir de fichiers externes. Les appareils à Cypress vous aident à lire ou écrire dans des fichiers. L'un des frameworks les plus populaires dans l'automatisation des tests est le framework piloté par les données dans lequel nous séparons les données des fichiers de test. Nous conservons généralement les données dans un fichier externe comme Excel et les lisons à l'aide de bibliothèques externes. Cypress nous fournit la même fonctionnalité pour lire les données des fichiers.

Cypress nous fournit un dossier appelé agencements, où nous pouvons créer des fichiers JSON et lire des données à partir de là où nous pouvons lire ces fichiers dans plusieurs fichiers de test. Nous stockerons les données comme valeur clé coupler et y accéder.

Comment utiliser les appareils Cypress dans les tests ?

Nous pouvons accéder aux appareils Cypress via la syntaxe suivante donnée ci-dessous

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

On comprendra les paramètres qui peuvent être passés dans les fixtures

chemin du fichier – le chemin où vous avez stocké vos données de test

codage – L'encodage utilisé lors de l'utilisation d'un fichier. Certains des encodages sont ascii, base64, hexadécimal, binaire, etc.

Options – Dans les options, on peut passer le temps mort réponse. Il s'agit de spécifier le timeout à résoudre cy.fixture()

Comment lire les données des appareils dans Cypress?

Nous allons définir les données de test dans un fichier sous le luminaire dossier. Nous accéderons aux données de test du fichier JSON dans le script de test à l'aide des appareils Cypress.

Maintenant, comprenons un exemple pour le cyprès agencements. Nous nous connecterons à l'URL en utilisant le nom d'utilisateur et le mot de passe. Stockons donc les valeurs du nom d'utilisateur et du mot de passe dans un fichier.

Créons un fichier nommé informations d'identification.json sous le dossier des appareils. Nous allons définir les variables au format JSON.

{
    "username" : "[email protected]",
    "password" : "admin",
    "adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
réparer 1
Exemple de fichier de luminaire

Accéder aux valeurs du fichier Fixture vers le fichier test

Puisque nous avons défini nos valeurs JSON dans le informations d'identification.json fichier, nous verrons comment y accéder dans notre fichier de test en utilisant les appareils Cypress.

Nous accéderons aux données des appareils en utilisant le this mot-clé dans le crochet avant

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

Dans l'exemple ci-dessus, nous accédons à notre fichier JSON via cy.fixture('informations d'identification'). Puisque notre nom de fichier JSON est informations d'identification.json, nous sommes passer le nom du fichier dans cy.fixture(). Maintenant, nous utilisons le concept d'alias et définissons nos données comme données de test. Avec la variable données de test, nous pouvons utiliser les valeurs de nom d'utilisateur et mot de passe dans notre fichier de test

describe("Cypress Fixtures Example", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) it("Connexion avec des informations d'identification valides ", 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) }); });

Comme vous pouvez le voir ci-dessus, dans .type() nous passons la valeur de notre fichier credentials.json comme this.testdata.nom d'utilisateur. De même, pour le mot de passe, nous accédons à la valeur en utilisant ceci.testdata.password. Pour l'url, nous utilisons la même méthode que le nom d'utilisateur et le mot de passe.

Lorsque nous exécutons le scénario de test, vous pouvez voir la valeur s'imprimer dans le tableau de bord. De cette façon, nous avons exécuté notre cas de test en utilisant Cypress Fixtures

réparer 2
Résultat du test de montage

Cyprès Multiple Fixtures

Dans cette section, nous allons comprendre comment utiliser les appareils Cypress avec plusieurs fichiers d'appareils.

Si nous voulons utiliser différentes données de luminaire pour le même fichier de test, par exemple, nous devons vérifier deux ensembles d'informations d'identification pour la page de connexion, comment pouvons-nous accéder aux fichiers ?

Une façon est d'écrire plusieurs it blocs qui répliqueront encore et encore le même code. Dans l'autre sens, nous pouvons utiliser Fixations Cypress pour accéder à différents tests données dans le fichier de spécifications. Voyons comment nous pouvons y parvenir en utilisant les luminaires Cypress

Nous avons déjà un fichier de fixation appelé informations d'identification.json.

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

Créons maintenant un autre fichier de luminaire nommé userData.json où nous utiliserons un nom d'utilisateur et un mot de passe invalides différents.

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

Voyons maintenant comment accéder aux deux données différentes de notre fichier de test.

Nous allons refactoriser le même fichier de test en utilisant la condition d'utiliser deux fichiers d'appareils différents.

const testValueFixtures = [ { "name": "credentials", "context": "1" }, { "name": "userData", "context": "2" } ] describe('Automation Test Suite - Fixtures', function () {//bouclage à travers les deux fixtues testValueFixtures.forEach((fixtureData) => { describe(fixtureData.context, () => { // accéder aux données de test à partir du fichier de fixation avant (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= Mot de passe]').clear() cy.get('[id=Mot de passe]').type(this.testData.password) cy.get('[type=submit]').click(); cy.url( ).devrait('être.égal', this.testData.adminUrl) }) }) }) })
réparer 3
Exemple d'accès à deux données de luminaire

Initialement, nous créons une variable appelée testValueFixturestestValueFixtures en tant que tableau où nous créons le contexte de deux fichiers de luminaires. Dans le premier contexte, nous passons le nom comme 'Lettres de créance' et le second comme 'données d'utilisateur' , car ils représentent nos noms de fichiers JSON où nous avons défini notre valeur.

Deuxièmement, nous parcourons les deux variables de fixture dans le bloc describe. Et comme nous en avons discuté précédemment, nous accédons aux données avant le bloc en utilisant .this()

Le reste du code est le même, où nous passons les données dans le cy.get()

Lorsque nous exécutons notre test, il s'exécutera en deux ensembles où le premier cas réussit avec des informations d'identification valides et le second échoue en raison d'informations d'identification invalides

réparer 4
Fixture utilisant le premier fichier de fixation

Comme vous pouvez le voir ci-dessus dans l'instantané, le premier cas de test a réussi et il a entré la valeur du premier fichier de luminaire informations d'identification.json

réparer 5
Exemple d'appareil utilisant le deuxième fichier d'appareil

Comme vous pouvez le voir dans la capture d'écran ci-dessus, le test a échoué et les valeurs transmises proviennent du deuxième fichier de luminaire userData.json

Vous pouvez également voir comment écrire des appareils Cypress à l'aide du modèle d'objet de page ici