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

245
Visualizações
Pase la variable de before() a it() en mocha

Soy muy nuevo en la automatización, estoy tratando de pasar el valor del token desde antes del block() a it() y me estoy volviendo indefinido.

Capaz de generar con éxito y guardarlo en token

 const { spec } = require('pactum'); const request = require('request'); const userConfig = require('../config/credential.json') process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; let token = ""; let authToken = ""; describe('POST /jobs', function () { before(function () { var option = { 'method': 'POST', 'url': 'https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token', 'headers': { 'Content-Type': 'application/x-www-form-urlencoded' }, form: { 'client_id': `${userConfig.client_id}`, 'grant_type': 'password', 'Password': `${userConfig.Password}`, 'UserName': `${userConfig.UserName}`, 'scope': `${userConfig.scope}`, 'client_secret': `${userConfig.client_secret}` } }; request(option, function (error, response) { if (error) throw new Error(error) const modifyResponse = JSON.parse(response.body) token = modifyResponse["access_token"] }) }) it('Create Job should return 201 status code', async () => { authToken = this.token console.log('------------>', authToken) await spec() .post('https://localhost:3000/jobs') .withHeaders('Authorization', `Bearer ${authToken}`) .withHeaders('X-Client-Id', 'AzureDataLoaderUI') .withHeaders('X-Message-Created-Ts', '2022-JUN-07 04:06') .withHeaders('X-Message-Id', '4e8fb14c-c71f-46f8-b41a-561d393037ce') .withHeaders('X-Transaction-Created-Ts', '2022-JUN-07 04:06') .withHeaders('X-Transaction-Id', 'f11c97dc-a6eb-4ff7-aff6-de47c4686941') .withHeaders('X-User-Id', 'AutoTestUser') .withHeaders('Ocp-Apim-Subscription-Key', 'a731ccf0510849c690d23bb42ecef9d3') .withHeaders('aeg-sas-key', 'b6LrYspQUAY2XnxkrDFDFDYsb8U2zqMQAzaQoZcQ=') .withJson({ "product": "IRT", "entity": "CENTRE PROVISIONING AND RECIPIENT DETAILS", "operation": "UPDATE", "jobName": "AUTOPERF02", "studyId": "AUTO02" }) .expectStatus(201); }); });
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Creo que también debe esperar la llamada request() , o quizás usar Cypress cy.request() en su lugar.

 let token = ""; let authToken = ""; describe('POST /jobs', function () { before(async function () { var option = { 'method': 'POST', 'url': 'https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token', 'headers': { 'Content-Type': 'application/x-www-form-urlencoded' }, form: { 'client_id': `${userConfig.client_id}`, 'grant_type': 'password', 'Password': `${userConfig.Password}`, 'UserName': `${userConfig.UserName}`, 'scope': `${userConfig.scope}`, 'client_secret': `${userConfig.client_secret}` } }; await request(option, function (error, response) { if (error) throw new Error(error) const modifyResponse = JSON.parse(response.body) token = modifyResponse["access_token"] }) }) it('Create Job should return 201 status code', async () => { authToken = token ...

Con cy.request , no tienes que esperar

 cy.request(option) .then(response => { // if error, it's already thrown token = response.body["access_token"] })

Uso de Mocha done() para indicar que la solicitud está completa

El async anterior solo funciona con solicitudes basadas en promesas.

Para esperar a que se complete la request(options, callback) pase la función done() de Mocha y llámela después de configurar su token.

Este es un ejemplo simple, usando un JSONPlaceholder para solicitar algunos datos

 const request = require('request'); let token; before(function (done) { request({ 'method': 'GET', 'url': 'https://jsonplaceholder.typicode.com/todos/1' }, function (error, response) { const modifyResponse = JSON.parse(response.body) token = modifyResponse.title done() // signal end of request }) }) it('sees the token', () => { expect(token).to.eq('delectus aut autem') // passes })
about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar la variable de entorno Cypress.env para guardar el token y luego usarlo en cualquier lugar durante su prueba.

 const {spec} = require('pactum') const request = require('request') const userConfig = require('../config/credential.json') process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0' let token = '' let authToken = '' describe('POST /jobs', function () { before(function () { var option = { method: 'POST', url: 'https://login.microsoftonline.com/<tenant_id>/oauth2/v2.0/token', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, form: { client_id: `${userConfig.client_id}`, grant_type: 'password', Password: `${userConfig.Password}`, UserName: `${userConfig.UserName}`, scope: `${userConfig.scope}`, client_secret: `${userConfig.client_secret}`, }, } request(option, function (error, response) { if (error) throw new Error(error) const modifyResponse = JSON.parse(response.body) //token = modifyResponse["access_token"] Cypress.env('token', modifyResponse['access_token']) //Set the token in env variable }) }) it('Create Job should return 201 status code', async () => { authToken = Cypress.env('token') //Get the token from env variable console.log('------------>', authToken) await spec() .post('https://localhost:3000/jobs') .withHeaders('Authorization', `Bearer ${authToken}`) .withHeaders('X-Client-Id', 'AzureDataLoaderUI') .withHeaders('X-Message-Created-Ts', '2022-JUN-07 04:06') .withHeaders('X-Message-Id', '4e8fb14c-c71f-46f8-b41a-561d393037ce') .withHeaders('X-Transaction-Created-Ts', '2022-JUN-07 04:06') .withHeaders('X-Transaction-Id', 'f11c97dc-a6eb-4ff7-aff6-de47c4686941') .withHeaders('X-User-Id', 'AutoTestUser') .withHeaders( 'Ocp-Apim-Subscription-Key', 'a731ccf0510849c690d23bb42ecef9d3' ) .withHeaders('aeg-sas-key', 'b6LrYspQUAY2XnxkrDFDFDYsb8U2zqMQAzaQoZcQ=') .withJson({ product: 'IRT', entity: 'CENTRE PROVISIONING AND RECIPIENT DETAILS', operation: 'UPDATE', jobName: 'AUTOPERF02', studyId: 'AUTO02', }) .expectStatus(201) }) })
about 4 years ago · Juan Pablo Isaza Relatório

0

También puede usar la function() en el bloque it() y configurarla con un alias.

 let authToken = ""; describe('POST /jobs', function () { before(function () { option = {...} cy.request(option) .then(response => { token = response.body["access_token"] }) .as('token') // alias will set "this.token" }) it('Create Job should return 201 status code', async funtion() { authToken = this.token // "this" can be used here console.log('------------>', authToken)
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