如何指定环境以将赛普拉斯测试指向正确的数据库凭据?

How to specify environment to point Cypress tests at the correct DB credentials?

下面是我在 cypress 测试中用来连接到 MySQL 数据库的 index.js 代码:

const mysql = require('mysql')
function queryTestDb(query, config) {
  const connection = mysql.createConnection(config.env.db)
  connection.connect()
  return new Promise((resolve, reject) => {
    connection.query(query, (error, results) => {
      if (error) reject(error)
      else {
        connection.end()
        return resolve(results)
      }
    })
  })
}

module.exports = (on, config) => {
  on('task', { queryDb: query => { return queryTestDb(query, config) }, });

  require('cypress-grep/src/plugin')(config)
  return config
}

目前,我的测试使用 cypress.json 中提供的数据库凭据:

  const connection = mysql.createConnection(config.env.db)

但我希望框架运行在不同的环境下,因为数据库名称不同。

我已经创建了 qa.json & staging.json 配置文件来存储数据库凭证,如下所示:

qa.json:

{
    "extends": "./cypress.json",
    "baseUrl": "myUrl",
    "env": {
        "db": {
          "host": "myHost",
          "user": "myUser",
          "password": "myPassword",
          "database": "taltektc_qa"
        }
      }
}

staging.json:

{
    "extends": "./cypress.json",
    "baseUrl": "myUrl",
    "env": {
        "db": {
          "host": "myUrl",
          "user": "myUser",
          "password": "myPassword",
          "database": "taltektc_stage"
        }
      }
}

这是我目前用于 运行 测试的命令:

npx cypress open --config-file staging.json

我试图在下面更新我的 index.js,但我收到 Cypress is not defined 错误消息:

module.exports = (on, config) => {
    on('task', { queryDb: query => { return queryTestDb(query, Cypress.config()) }, });

有人可以告诉我我的 index.js 中需要进行哪些更改,以便我可以指定在建立数据库连接时要使用的配置文件吗?

在 Node 插件任务中,config 参数等同于 browser-side 规范中的 Cypress.config()

您应该在应用 --config-file staging.json 后得到正确的配置解析,所以您只需要原始代码

module.exports = (on, config) => {
    on('task', { queryDb: query => { return queryTestDb(query, config) }, });

打开runner后可以在settings/configuration

下查看解决了什么