Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

339
Vistas
Mantener variables dinámicas entre pruebas en Cypress

Estoy tratando de hacer una prueba de Cypress en la que quiero configurar una entrada de un número aleatorio y luego verificar que el número aleatorio esté configurado correctamente en otra página. Estoy creando el número aleatorio con esta función:

 function getRandomArbitrary(min, max, decimals) { return (Math.random() * (max - min) + min).toFixed(decimals); }

Y configurando las variables dentro de la descripción como:

 describe('Reflect changes from X to the Y', () => { const termCap = getRandomArbitrary(0.01, 0.3, 2); const termCapFee = getRandomArbitrary(0.01, 0.3, 2);

El problema que tengo actualmente es que las variables se restablecen en cada it() diferente que creo. Y no sé qué sucederá porque quiero ser el mismo número constante en todas las pruebas.

Intenté configurarlos en un antes () pero tampoco funcionó.

¿Alguien sabe cómo debo crear las variables?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Intenté configurarlos en un antes () pero tampoco funcionó.

El bloque before debería funcionar. ¿Quizás el bloque before no está configurado correctamente? Puedo hacer que esto funcione usando la siguiente configuración.

 describe("Foo Fighter", function() { var foo; before(function () { foo = getRandomArbitrary(1,10,1); }); it("Fighting foo 1", function () { cy.log(foo); }); it("Fighting foo 2", function () { cy.log(foo); }); it("Fighting foo 3", function () { cy.log(foo); }); }); function getRandomArbitrary(min, max, decimals) { return (Math.random() * (max - min) + min).toFixed(decimals); }

Lo que produce el siguiente resultado, el número aleatorio permanece igual durante cada bloque it

Prueba de funcionamiento

El flujo lógico es:

  • En el bloque de describe , declara tu variable.
  • En el bloque before , establezca su variable usando el número aleatorio.
  • En el bloque it , use la variable set.

EDITAR :

Para responder a tu comentario:

Si lo configuro como tú, funciona bien, pero imagina si en el primero visitas google y en el segundo visitas github, el bloque anterior se ejecutará dos veces.

El problema aquí es que cuando visita un sitio nuevo, Cypress vuelve a cargar todo el contexto de prueba, por lo que un bloque before , como mencionó, se ejecutará nuevamente cada vez que se vuelva a cargar el contexto de prueba (es decir, cada vez que se visite un nuevo dominio).

La forma de evitar esto es hacer trampa configurando otra descripción que se ejecute primero y escribiendo sus variables en los accesorios y usándolos en su prueba, así:

 describe("Before Describe", function(){ const foo = getRandomArbitrary(1,10,1); it("Setting up test context", function() { cy.writeFile("cypress/fixtures/test.json", { "foo" : foo}); }); }); describe("Foo Fighter", function() { it("Fighting foo 1", function () { cy.visit("https://example.cypress.io"); cy.fixture("test.json").then(kung => { cy.log(kung.foo); }) }); it("Fighting foo 2", function () { cy.visit("https://google.com") cy.fixture("test.json").then(kung => { cy.log(kung.foo); }) }); it("Fighting foo 3", function () { cy.fixture("test.json").then(kung => { cy.log(kung.foo); }) }); }); function getRandomArbitrary(min, max, decimals) { return (Math.random() * (max - min) + min).toFixed(decimals); }

Esto producirá los siguientes resultados:

prueba dos

Es cierto que no es la forma más limpia de construir su flujo de prueba, sin embargo, produce el resultado que busca. También debería funcionar si coloca la configuración en un it que viene primero dentro de la misma describe que las otras pruebas.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda