如何从另一个测试文件访问 cypress.env 文件

How to access cypress.env file from another test file

提问人:Jimmy 提问时间:4/18/2023 最后编辑:user16695029Jimmy 更新时间:4/18/2023 访问量:98

问:

用作常用功能的存储。
以下是生成令牌的代码:
command.js


Cypress.Commands.add('get_token', () => { 
    cy.api({
        method: "POST",
        url:    "https://api-stg.sample.com/login",
        body: 
        {
        "mobile_number": 09123456789,
        "password": "p@ssw0rd"  
        }
      })
        .then((response) => {
          const token = response.body.data.access_token.token
          cy.log("Bearer token: " + token )
          
          Cypress.env('token', token)
      })
    })

在我的测试文件中,我尝试使用该函数并使用生成的令牌将值放在我的标头上:授权get_token

      use_auth_from_commandjs () {
        cy.get_token() 

        cy.api({
          method: "POST",
          url:    "https://api-stg.sample.com/auth",
          headers: { 'Authorization': `Bearer ${Cypress.env('token')}`},
...

为什么我无法从我的测试文件访问? 根据我的理解,使用将变量设置为全局变量。Cypress.env('token', token)Cypress.env( )

在我的日志上,持有者令牌始终为 .undefined "Authorization": "Bearer undefined",

柏树

评论


答:

2赞 user16695029 4/18/2023 #1

这很微妙,但您的命令正在加载设置之前的值。cy.api()Cypress.env('token')

您可以通过像这样推迟第二个命令的加载来绕过它cy.api()

use_auth_from_commandjs () {
  cy.get_token() 
    .then(() => {   // using .then() means do next part after previous commands have run
      cy.api({
        method: "POST",
        url:    "https://api-stg.sample.com/auth",
        headers: { 'Authorization': `Bearer ${Cypress.env('token')}`},
        ..
    })
...