【问题标题】:How to setup multiple Environments in CypressJs如何在 CypressJs 中设置多个环境
【发布时间】:2020-04-09 18:16:05
【问题描述】:

我无法弄清楚如何正确设置我的 cypressJs 环境以进行测试。我很想得到一些帮助。

在我的index.html 文件中,在<script> 区域中,我添加了一个CONFIG 对象。在生产中,此配置对象由 MVC 应用程序添加。此配置对象可以有许多不同的状态(每个用户可能缺少某些信息或不同)。在cypress.json 文件中,在“env”下我有同样的对象。我通过调用Cypress.env("CONFIG");spec.js 文件中使用它,效果很好。

但是,我想为不同的测试更改应用程序/环境变量的状态。这可能吗?

我想使用包含所有数据的 CONFIG 运行一个规范文件,并使用缺少数据的 CONFIG 对象运行一个规范文件(例如地址 == null),以便我可以在两种情况。

这是可能的还是我做错了什么?

index.html

<!DOCTYPE html>
<html lang="en">
  <head>
   <script>
    CONFIG = {
    dealer: {
          id: 19285,
          address: "343 Somewhere Lane SpringField, TN 47383",
          name: "HUDSON TRACTOR & RENTAL EQUIPMENT & OTHER HEAVY THINGS
   }
   </script>
  </head>
</html>

cypress.json

{
 "env": {
   "CONFIG": {
      dealer: {
          id: 19285,
          address: "343 Somewhere Lane SpringField, TN 47383",
          name: "HUDSON TRACTOR & RENTAL EQUIPMENT & OTHER HEAVY THINGS
      }
    }
  }
}

【问题讨论】:

    标签: vue.js vuex cypress


    【解决方案1】:

    一次针对单个环境运行规范文件更像是一种最佳实践。要么使用覆盖 cypress.env.json,要么为每个环境(例如 test 和 prod)创建 2 个配置文件,这将覆盖在 cypress.env.jsoncypress.json 中设置的 env 变量。 https://docs.cypress.io/guides/guides/environment-variables.html#Option-2-cypress-env-json

    但是,如果您想要一个快速而肮脏的解决方案来解决上述问题(我不建议这样做),您可以使用以下内容设置您的规范文件:

    cypress.json

    {
     "env": {
       "CONFIG": {
        "id": "19285",
        "address": "343..."
        },
       "CONFIG_PROD": {
        "id": "19285",
        "address": ""
        }
     }
    }
    

    spec_1.js

    const config = Cypess.env("CONFIG")
    

    spec_2.js

    const config = Cypress.env("CONFIG_PROD")
    

    或者只是简单地将它们放在夹具文件下(我认为这更适合这种情况): config.json

       {
        "test": {
            "id": "19285",
            "address": "343..."
        },
        "prod": {
            "id": "19285",
            "address": ""
        }
       }
    

    spec_1.js

    import {test, prod} from '../fixtures/config.json'
    const address = test.address
    const address_null = prod.address //If you would like to run this on another 'it' test
    

    spec_1.js

    import {prod} from '../fixtures/config.json'
    const address_null = prod.address
    

    【讨论】:

    • 这听起来不错,但我使用 index.html 文件中的“CONFIG”属性也基本上在测试/开发时“播种”应用程序。我如何将其替换为各种版本,并在测试期间保持同步我正在使用的版本?
    猜你喜欢
    • 2017-07-18
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多