首页 > 解决方案 > 如何在 CypressJs 中设置多个环境

问题描述

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

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

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

我想使用一个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.jsvuexcypress

解决方案


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

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

柏树.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

推荐阅读