jestjs-如何从CI中的cli参数化测试执行?

时间:2019-12-27 15:08:08

标签: continuous-integration jestjs

我有4个环境:

  • dev(开发人员区域)
  • 测试(测试区域)
  • preprod(生产前环境)
  • 生产(生产环境)

这些环境需要不同的配置来执行测试(不同的url,用户名,资产等)。

如何在持续集成中将配置作为参数传递给玩笑?

1 个答案:

答案 0 :(得分:0)

正如您所读的here一样,开玩笑不允许传递可用于处理在运行时加载的自定义配置的自定义参数。

我提出了一种对我有用的解决方法。

1)创建一个配置文件,例如config.js 2)编辑config.js并导出针对环境的模块切换

switch (env) {
    case "test":
        module.exports = {
            baseUrl: 'https://test.website.com'
        }
        break;
        case "production":
        module.exports = {
            baseUrl: 'https://production.website.com'

}

3)为您需要的每种环境创建一个javascript文件

  • test-configuration.js
  • production-configuration.js

4)编辑这些写入环境变量的文件

例如test-configuration.js将是

process.env.ENVIRONMENT = "test"

5)编辑config.js,以便访问process.env

let env = process.env.ENVIRONMENT || "test" //test will be the default
switch (env) {
    case "test":
        module.exports = {
            baseUrl: 'https://test.website.com'
        }
        break;
        case "production":
        module.exports = {
            baseUrl: 'https://production.website.com'

}

6)测试文件的加载配置,因为它是静态文件

const config = require('./config.js')

7)使用jest setupFiles添加用于加载环境变量的setupFiles。

例如,运行

jest --setupFiles=./test-configuration.js

jest将加载test-configuration.js文件,该文件将在“ process.env.ENVIRONMENT”变量上设置“ test”,因此config.js文件将在“ test”环境上“切换”,并且所有测试都将使用它。

因此您现在(或CI可以)根据需要加载配置。