You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SSH隧道实现Cypress与MySQL的连接?

Cypress 通过SSH隧道连接MySQL实现方法

Cypress 浏览器端运行的测试代码无法直接调用 Node 层的 mysql-ssh 包,所有涉及 Node 原生能力的操作都需要通过 task 注册到插件层实现,具体步骤如下:

步骤1:配置 cypress/plugins/index.js

在插件文件中注册自定义task,封装SSH连接、SQL执行、连接关闭的完整逻辑:

const mysqlssh = require('mysql-ssh');
const fs = require('fs');

module.exports = (on, config) => {
  on('task', {
    queryMysqlOverSsh(params) {
      const { sshConfig, dbConfig, sql } = params;
      // 自动读取私钥文件,也可直接传入已读取的privateKey内容跳过该步骤
      if (sshConfig.privateKeyPath) {
        sshConfig.privateKey = fs.readFileSync(sshConfig.privateKeyPath);
        delete sshConfig.privateKeyPath;
      }

      return mysqlssh.connect(sshConfig, dbConfig)
        .then(client => {
          return new Promise((resolve, reject) => {
            client.query(sql, (err, results, fields) => {
              mysqlssh.close();
              if (err) return reject(err);
              resolve(results);
            })
          })
        })
        .catch(err => {
          // 连接出错时主动关闭隧道,避免资源残留
          mysqlssh.close();
          throw err;
        })
    }
  })
}

步骤2:在 cypress/integration 测试用例中调用

直接在测试逻辑中通过cy.task调用注册好的方法即可获取查询结果:

describe('MySQL数据校验测试', () => {
  it('查询目标表数据并做断言', () => {
    cy.task('queryMysqlOverSsh', {
      // SSH服务器配置
      sshConfig: {
        host: 'x.x.x.x',
        user: 'xyz',
        privateKeyPath: '替换为你的私钥文件绝对路径'
      },
      // MySQL数据库配置
      dbConfig: {
        host: 'HOST_NAME',
        user: 'USER_NAME',
        password: 'xxxx',
        database: 'DB_NAME'
      },
      // 要执行的SQL语句
      sql: 'select * from TABLE_NAME'
    }).then(queryResults => {
      // 示例:打印结果、做业务断言
      console.log('SQL查询结果:', queryResults);
      expect(queryResults.length).to.be.greaterThan(0);
    })
  })
})

注意事项

  • 私钥路径建议使用绝对路径,避免Cypress运行时工作目录变动导致读取失败
  • 敏感配置(SSH密码、数据库密码等)建议存储在Cypress环境变量中,不要硬编码在代码里
  • 若需要执行多次SQL查询,可调整连接逻辑复用SSH隧道,避免频繁建连断连降低执行效率

内容的提问来源于stack exchange,提问作者Akshaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:54:01