testdata.json
[ { "case_id": 1, "case": "Login with valid data as wholesaler", "username": "admin", "password": "password", "result": "pass" }, { "case_id": 2, "case": "Login with valid data as reseller", "username": "myreseller.admin", "password": "password", "result": "pass" }, { "case_id": 3, "case": "Login with valid data as subscriber", "username": "mytenant.admin", "password": "password", "result": "pass" } ]login.spec.js
before(() => { cy.fixture('testdata').then((datajson) => { testdata = datajson return testdata }) }) ------it blocks----- it.only('TC03 - Login with valid data as subscriber', () => { cy.login(testdata.username, testdata.password); cy.title().should('equal', 'Home'); cy.logout(); -------more it blocks-------Cómo usarlo correctamente para que la línea 2 devuelva {testdata.username = mytenant.admin || testdata.password = contraseña} obteniendo específicamente del tercer registro
En Cypress Docs, se describen dos formas de manejar esos archivos JSON desde la carpeta de accesorios: https://docs.cypress.io/api/commands/fixture#Examples
1. Opción
Cargue su testdata.json usando cy.fixture():
cy.fixture('testdata.json').as('testdata');2. Opción (mi recomendación)
En su login.spec.js puede importar todos los archivos json relevantes de su carpeta de accesorios:
import testdata from '../fixtures/testdata.json';Luego puede usarlos directamente de la siguiente manera para, por ejemplo, usar el nombre de usuario y la contraseña para el primer usuario:
it.only('TC03 - Login with valid data as subscriber', () => { cy.login(testdata[0].username, testdata[0].password); cy.title().should('equal', 'Home'); cy.logout(); })Su json está estructurado como una matriz, por lo que necesita obtener elementos de él mediante el índice o reestructurar su accesorio testdata.json .
Prueba esto:
it.only('TC03 - Login with valid data as subscriber', () => { cy.fixture('testdata').then((dataFixture) => { cy.login(dataFixture[2].username, dataFixture[2].password); cy.title().should('equal', 'Home'); cy.logout(); }) }) PD Suponiendo que sus datos de testdata se importen en la parte superior del archivo.
Puedes hacer algo como esto:
describe('Some Test Suite', function () { beforeEach(function () { cy.fixture('testdata').then(function (testdata) { this.testdata = testdata }) }) it.only('TC03 - Login with valid data as subscriber', function () { cy.log(this.testdata[2].username) //prints mytenant.admin cy.log(this.testdata[2].password) //prints password cy.login(this.testdata[2].username, this.testdata[2].password) cy.title().should('equal', 'Home') cy.logout() }) }) Asegúrese de obtener el archivo de elementos fijos beforeEach() para que el elemento fijo esté disponible para todos los casos de prueba.