cypress - Cypress - 状态:401 - token 未授权对其他 API 调用的身份验证

我想就在其他 API 调用中使用的身份验证 token 寻求您的帮助。以下是命令和测试用例的脚本:

//command.js
import "cypress-localstorage-commands";
Cypress.Commands.add('login', () => { 
cy.request({
  method: 'POST',
  url: Cypress.env('api_auth'),
  body: {
    email: Cypress.env('email'),
    password: Cypress.env('password'),
 }
 })
 .its('body')
 .then(body => {
  cy.window().then(win => win.localStorage.setItem('jwt', body.token))
 })

//test case
describe('GET Data', ()=> {
before(() => {
    cy.login();
    cy.saveLocalStorage();
  });
  
  beforeEach(() => {
    cy.restoreLocalStorage();
  });

it('GET - View All Data', () =>{
    cy.request({
        method : 'GET',
        url : Cypress.env('api_data'),
    }).then((res) =>{
        expect(res.status).equal(200)
    })
})

回答1

在我的方法中,我有相同的命令,但不是将 token 存储在本地存储中,而是将其添加到管理员对象中的 cypress.env 文件中,因为我有几个管理员所以我的对象文件是这样的

{
admins: 
admin1:{
"username":"admin1",
"password": "123456",
"token":""
},
admin2:{
"username":"admin1", 
"password": "123456",
"token":""
 }
}

这样,您可以 store 几个管理员/用户 tokens 并附加为:

Cypress.env.admins.admin1.token 或 Cypress.env.admins.admin2.token

我认为这种方法更简单,在大约 300 次测试中,我没有看到关于测试执行速度或其他任何问题的任何问题

相似文章

随机推荐

最新文章