Cypress API 测试:如何访问从它块生成的数据到另一个 it 块

Cypress API testing : How to access data generated from it block to another it block

提问人:Jimmy 提问时间:4/13/2023 更新时间:4/14/2023 访问量:282

问:

如何访问从第一个区块到第二个区块生成的令牌。itit

代码如下:

第一个IT块

      it('Login using new user', () => {
        cy.api({
          method: "POST",
          url:    "https://api-stg.sample.com/v1/user/login",
          body: 
          {
          "mobile_number": "+9912345678"
          "password": "p@ssword"  
          }

        })
          .then((response) => {
            expect(response.status).to.eq(200)
        })
          .then((response) => {
            const bearer_token = response.body.data.user.access_token.token // 
*in here where I get and put the token in var bearer_token*

            cy.log("Bearer token: " + token )
        })
      })

第 2 个 IT 块

     it('Create New Mobile', () => {
        cy.api({
          method: "POST",
          url:    "https://api-stg.sample.com/v1/user/add_new_mobile_numbers",
          headers: {
            'Authorization': 'Bearer ' + token // *in here where I put the token*
          },
          body: 
          {
            "mobile_prefix": "+991",
            "mobile_number": "9912345679"
          }
})

我从第一个区块登录,然后我需要使用令牌在第二个区块中添加新的手机号码。
在 Cypress Dashboard 中,它返回一个错误:
token is not defined

JavaScript 赛普拉斯

评论

0赞 Alex Izbas 4/13/2023
你好。若要在测试之间共享数据,可以选择同一规范文件中的全局上下文变量,或用于存储令牌。localStorage

答:

1赞 Izzy.Du 4/14/2023 #1

这是通过 保存到测试环境变量的理想选择,因为它们在测试边界上持续存在。Cypress.env()

it('Login using new user', () => {
  cy.api(...)
    .then((response) => {
      const token = response.body.data.user.access_token.token

      // store env var
      Cypress.env('token', token)               
    })

...
it('Create New Mobile', () => {
  cy.api({
...
    headers: {
      'Authorization': `Bearer ${Cypress.env('token')}`  // use env var 
...

请参阅环境变量