如何在Cypress中设置/定义环境变量和api_Server?

时间:2019-05-15 23:29:27

标签: javascript testing automated-tests cypress

当前,我们正在使用cypress来测试我们的应用程序。我们有2个环境,其中包含2个不同的api_Servers。我想在环境文件中定义它。我不确定如何在同一文件中定义两个URL。

例如

环境1:

baseUrl-https://environment-1.me/ Api_Serever-https://api-environment-1.me/v1

环境2:

baseUrl-https://environment-2.me/ Api_Serever-https://api-environment-2.me/v1

很少有测试用例依赖baseUrl,而有1个测试用例要检查API是否依赖于Api_Serever。

为解决此问题,我尝试在此链接https://docs.cypress.io/api/plugins/configuration-api.html#Usage之后的插件内的配置文件中设置baseUrl和Api_Serever。

我为2种环境创建了两个配置文件

{
    "baseUrl": "https://environment-2.me/",
    "env": {
      "envname": "environment-1",
      "api_server": "https://api-environment-1.me/v1"
    }
}

另一个与此类似的文件,用于更改各个端点。

插件文件已被修改为

// promisified fs module
const fs = require('fs-extra')
const path = require('path')

function getConfigurationByFile (file) {
  const pathToConfigFile = path.resolve('..', 'cypress', 'config', `${file}.json`)

  return fs.readJson(pathToConfigFile)
}

module.exports = (on, config) => {
  // `on` is used to hook into various events Cypress emits
  // `config` is the resolved Cypress config
    // accept a configFile value or use development by default
    const file = config.env.configFile || 'environment-2'

    return getConfigurationByFile(file)

}

在测试用例中,无论哪个引用了我们使用visit('/')的baseUrl

当我们使用cypress run --env configFile = environment-2命令从命令行运行特定文件时,这很好用,因为visit('/')自动替换为相应的环境期望API测试用例。

我不确定应该如何修改API测试以调用API端点而不是基本URL。

有人可以帮忙吗?

谢谢, 印杜。

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,则需要使用不同的URL运行测试。可以在cypress.json或env文件中设置网址。 您可以按以下方式在cypress.json文件中配置网址吗?不过我还没有尝试过,你可以试一下吗。

{
    "baseUrl":  "https://environment-2.me/",
    "api_server1": "https://api1_url_here",
    "api_server2": "https://api2_url_here"
}

在测试调用中传递如下网址;

describe('Test for various Urls', () => {
    it('Should test the base url', () => {
      cy.visit('/')  // this point to baseUrl configured in cypress.json file
      // some tests to continue based on baseUrl..
    })

    it('Should test the api 1 url', () => {
      cy.visit(api_server1)  // this point to api server 1 configured in cypress.json file
      // some tests to continue based on api server1..
    })

  it('Should test the api 2 url', () => {
      cy.visit(api_server2)  // this point to api server 2 configured in cypress.json file
      // some tests to continue based on api server2..
    })
})

答案 1 :(得分:0)

此问题已解决。

最好的方法是根据其文档(https://docs.cypress.io/api/plugins/configuration-api.html#Usage)的建议使用插件。

我保持与问题相同的结构,并在测试用例中使用 cy.request(Cypress.env('api_server'))

这解决了我的问题:)