首页 > 解决方案 > 根据我需要在其中运行套件的环境更改 .page URL

问题描述

我们一直在使用我们的暂存环境构建我们的自动化套件,但很快就会上线,并希望准备好告诉项目在哪里运行(暂存、生产)。

环境中站点之间的唯一区别是 URL。我的问题是,从头到尾,如何通过 CLI 选项设置 .page URL?

现在,我创建了一个环境配置文件,其中包含我们的暂存和生产 URL,然后我将数据调用到我的测试文件中。现在这很好,但我需要创建一个脚本,其中包含在运行时设置环境的选项,而无需在启动之前进行手动查找和替换。

我在网上环顾四周,发现我认为是代码片段和一般说明,但我不是一个内心的开发者,而且会睁一只眼闭一只眼。如果我能为此获得 ELI5,那就太棒了。

我现在正在做的例子:

const env = require('../environment_variables.json')


fixture `blog`
  .page `${env.production}`

然后我在启动套件之前手动将生产更改为登台,反之亦然。

由于该项目将从 CICD 运行,我希望能够在我的 CLI 和脚本中执行类似的操作:

testcafe env=production

然后将在每个测试文件的 .page 调用所在的位置设置 env 值。

谢谢!

标签: javascripttestingenvironment-variablescommand-line-interfacetestcafe

解决方案


有不同的方法可以做到这一点。在这种情况下我已经成功地使用了环境变量,所以我会分享这个解决方案,因为它可以解决你的问题。

config.json在项目的根目录中创建:

{    
    "baseUrl": {
        "dev": "https://dev.com/",
        "staging": "https://staging.com/",
        "prod": "https://prod.com/"
    }
}

然后我在某个地方创建了两个辅助函数Helpers/env.js

import config from '../config';

function getEnv () {
    return process.env.TESTCAFE_ENV;
}

function getBaseUrl () {
    return config.baseUrl[getEnv()];
}

export { getEnv, getBaseUrl };

然后在我的测试文件中Tests/

import { getBaseUrl } from '../Helpers/env';

const baseUrl = getBaseUrl();

fixture `Test Suite`
    .page(baseUrl);

就是这样。然后,当我需要在 dev 上运行测试时,我执行:

$ TESTCAFE_ENV=dev testcafe

分期:

$ TESTCAFE_ENV=staging testcafe

和生产:

$ TESTCAFE_ENV=prod testcafe

推荐阅读