如何在 cypress api 自动化测试中获取、存储和重用 firebase 令牌
How to get, store and reuse firebase token in cypress api automated testing
在正文“电子邮件”和“密码”中发送后 https://identitytoolkit.googleapis.com/ returns 响应中的一些对象。
其中之一是“idToken”:带有令牌的值。
我需要什么?
我需要获取此令牌,将其存储在变量中并在进一步的测试中重复使用。
到目前为止我准备了这样的东西:
it("Get a fresh admin firebase token", () => {
cy.request({
method: "POST",
url: "https://identitytoolkit.googleapis.com/...",
body: {
"email": "myUsername",
"password": "myPassword",
"returnSecureToken": true
},
headers: {
accept: "application/json"
}
}).then((responseToLog) => {
cy.log(JSON.stringify(responseToLog.body))
}).then(($response) => {
expect($response.status).to.eq(200);
})
})
})```
Above code works, but cy.log() returns the whole body response. How can I separate only idToken and reuse it in my next API scenarios?
考虑到 idToken
在响应主体中,所以在 then()
中你可以直接包装值并使用别名保存它,然后在以后使用它。
it('Get a fresh admin firebase token', () => {
cy.request({
method: 'POST',
url: 'https://identitytoolkit.googleapis.com/...',
body: {
email: 'myUsername',
password: 'myPassword',
returnSecureToken: true,
},
headers: {
accept: 'application/json',
},
}).then((response) => {
cy.wrap(response.body.idToken).as('token')
})
})
cy.get('@token').then((token) => {
cy.log(token) //logs token or Do anything with token here
})
如果您想在不同的 it
区块中使用令牌,您可以:
describe('Test Suite', () => {
var token
it('Get a fresh admin firebase token', () => {
cy.request({
method: 'POST',
url: 'https://identitytoolkit.googleapis.com/...',
body: {
email: 'myUsername',
password: 'myPassword',
returnSecureToken: true,
},
headers: {
accept: 'application/json',
},
}).then((response) => {
token = response.body.idToken
})
})
it('Use the token here', () => {
cy.log(token) //prints token
//use token here
})
})
在正文“电子邮件”和“密码”中发送后 https://identitytoolkit.googleapis.com/ returns 响应中的一些对象。 其中之一是“idToken”:带有令牌的值。
我需要什么?
我需要获取此令牌,将其存储在变量中并在进一步的测试中重复使用。
到目前为止我准备了这样的东西:
it("Get a fresh admin firebase token", () => {
cy.request({
method: "POST",
url: "https://identitytoolkit.googleapis.com/...",
body: {
"email": "myUsername",
"password": "myPassword",
"returnSecureToken": true
},
headers: {
accept: "application/json"
}
}).then((responseToLog) => {
cy.log(JSON.stringify(responseToLog.body))
}).then(($response) => {
expect($response.status).to.eq(200);
})
})
})```
Above code works, but cy.log() returns the whole body response. How can I separate only idToken and reuse it in my next API scenarios?
考虑到 idToken
在响应主体中,所以在 then()
中你可以直接包装值并使用别名保存它,然后在以后使用它。
it('Get a fresh admin firebase token', () => {
cy.request({
method: 'POST',
url: 'https://identitytoolkit.googleapis.com/...',
body: {
email: 'myUsername',
password: 'myPassword',
returnSecureToken: true,
},
headers: {
accept: 'application/json',
},
}).then((response) => {
cy.wrap(response.body.idToken).as('token')
})
})
cy.get('@token').then((token) => {
cy.log(token) //logs token or Do anything with token here
})
如果您想在不同的 it
区块中使用令牌,您可以:
describe('Test Suite', () => {
var token
it('Get a fresh admin firebase token', () => {
cy.request({
method: 'POST',
url: 'https://identitytoolkit.googleapis.com/...',
body: {
email: 'myUsername',
password: 'myPassword',
returnSecureToken: true,
},
headers: {
accept: 'application/json',
},
}).then((response) => {
token = response.body.idToken
})
})
it('Use the token here', () => {
cy.log(token) //prints token
//use token here
})
})