如何保存不记名令牌并在另一个“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)
})
请参阅文档中“编写测试”页面的 hooks 部分。
使用
before
钩子获取不记名令牌并将其分配给测试模块顶级范围中的变量。
let bearer;
before(() => {
cy.then(async () => {
// ...
bearer = ...;
})
});
别名方法是正确的,但不要将其与
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)
...
})
您可以使用
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)
})