【问题标题】:Cypress: Can't use --env variables from command line in test file赛普拉斯:不能在测试文件的命令行中使用 --env 变量
【发布时间】:2020-04-09 10:25:27
【问题描述】:

在我的赛普拉斯设置中,我的 cypress.json 文件中有以下值(以及其他值):

{
 "PREPROD": {
    "url": "https://preprod.com",
    "username": "admin",
    "password": "admin"
  },
 "PROD": {
    "url": "https://prod.com",
    "username": "admin",
    "password": "admin"
  }
}

我的测试文件位于 cypress/integration/test.js

根据我要运行测试的环境,我想在我的测试文件中使用与该环境相关的值

我试过这样跑:

npx cypress run --env environment="PREPROD" --spec "cypress/integration/test.js"

这会返回一个错误,说明环境未定义。

在我的测试文件中,我有以下从命令行使用变量:

Cypress.config().environment.username

如何使用我在命令行中定义的变量? 我试过在这里阅读文档,但它对我不起作用:Cypress Documentation

【问题讨论】:

    标签: javascript configuration cypress


    【解决方案1】:

    根据文档,您可以像这样访问environment 变量:

    Cypress.env('environment')
    

    如果您想获得取决于此的选项,您可以执行以下操作:

    const CypressConfiguration = require('cypress.json')
    
    const environment = Cypress.env('environment') || 'PREPROD'
    
    const options = CypressConfiguration[environment]
    

    另一种方法是使用config-file 选项:

    cypress.prod.json

    {
        "url": "https://prod.com",
        "username": "admin",
        "password": "admin"
    }
    

    cypress.preprod.json

    {
        "url": "https://preprod.com",
        "username": "admin",
        "password": "admin"
    }
    

    然后:

    npx cypress run --config-file cypress.prod.json --spec "cypress/integration/test.js"
    

    【讨论】:

    • 我的问题是 Cypress.env('environment') 也没有从命令行中提取值。
    • 我已经编辑了我的答案以添加另一种方法。顺便问一下,您正在运行的命令与您在问题中发布的命令不同吗?
    • 我采用了您使用配置文件的方法,很好。为了使我的测试正常工作,我必须与您定义的内容略有不同。我需要像这样从配置文件中调用我的变量: Cypress.config.environment 我仍然不明白为什么 .env 不起作用。
    • 重现你的问题有点麻烦。如果您不创建沙箱或 GitHub 存储库,我无法帮助您。如果其他方法适合您,请投票并验证我的答案:)
    猜你喜欢
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 2019-12-27
    相关资源
    最近更新 更多