Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

338
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda