我如何保存不记名令牌并将其用于另一个“IT”块?

问题描述 投票:0回答:3

如何保存不记名令牌并在另一个“IT”块中使用它?请帮助我是 cypress 和 JavaScript 的新手。

让 Bearer_token 描述('获取新的API,函数(){

it("get api request", function(){
    
    cy.request({

        url : 'whatever url',
        method : "POST",
        body : {
            userName : 'saurabh.sharma.com',
            password : 'Indigo@123'
        }

    }).its('body').then((body) => {
        expect(body.status).to.eq('success')
        let A_token = body.data.token
        // cy.wrap(A_token).as('Bearer_token')
        
        cy.log(body.data.token).as('Bearer_token')
        })
    cy.log(this.Bearer_token)
    
    
    
    cy.request({

        url: 'whatever url',
        method: "GET",
        headers: {
            'authorization': 'Bearer ' + this.Bearer_token,
            'client-id': '00'
        }
    }).then((res)=>{
        expect(res.status).to.eq(200)
        var count = res.body.data.totalCount
        cy.wrap(count).as('count')

        })
    cy.log(this.count)   
    })
    
javascript jquery cypress web-api-testing
3个回答
3
投票

请参阅文档中“编写测试”页面hooks 部分。

使用

before
钩子获取不记名令牌并将其分配给测试模块顶级范围中的变量。

let bearer;

before(() => {
    cy.then(async () => {
        // ...
        bearer = ...;
    })
});

3
投票

别名方法是正确的,但不要将其与

cy.log()
结合使用,因为该命令不会返回记录的值。

...
}).its('body').then((body) => {
  expect(body.status).to.eq('success')
  cy.wrap(body.data.token).as('Bearer_token')
  cy.log(this.Bearer_token)
})
cy.log(this.Bearer_token)

要在进一步测试中使用别名,请使用相同的

function()
格式

it("get api request", function(){
  ...
  cy.wrap(A_token).as('Bearer_token')    
  cy.log(this.Bearer_token)
  ...
})

it("uses api result", function(){
  ...
  cy.log(this.Bearer_token)              
  ...
})

1
投票

您可以使用

Cypress.env
变量来全局保存和使用令牌 -

it('get api request', function () {
  cy.request({
    url: 'whatever url',
    method: 'POST',
    body: {
      userName: 'saurabh.sharma.com',
      password: 'Indigo@123',
    },
  })
    .its('body')
    .then((body) => {
      expect(body.status).to.eq('success')
      Cypress.env('Bearer_token', body.data.token)
    })
  cy.log(Cypress.env('Bearer_token'))

  cy.request({
    url: 'whatever url',
    method: 'GET',
    headers: {
      authorization: 'Bearer ' + Cypress.env('Bearer_token'),
      'client-id': '00',
    },
  }).then((res) => {
    expect(res.status).to.eq(200)
    var count = res.body.data.totalCount
    cy.wrap(count).as('count')
  })
  cy.log(this.count)
})
© www.soinside.com 2019 - 2024. All rights reserved.