Как установить / определить переменные окружения и api_Server в кипарис? - PullRequest
0 голосов
/ 16 мая 2019

В настоящее время мы используем Cypress для тестирования нашего приложения.У нас есть 2 окружения с 2 разными серверами api_Servers.Я хочу определить это в файлах среды.Я не уверен, как определить оба URL в одном файле.

Например,

Environment-1:

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

Environment-2:

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

Таким образом, от baseUrl зависит только несколько тестовых случаев, и 1 тестовый случай для проверки API зависит от Api_Serever.

Чтобы решить эту проблему, я попытался установить baseUrl и Api_Serever в файле конфигурации внутри плагина по этой ссылке https://docs.cypress.io/api/plugins/configuration-api.html#Usage.

Я создал два файла конфигурации для 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)

}

внутри тестовых случаев, в зависимости от того, какое обращение к baseUrl мы использовали посещение ('/')

Это прекрасно работает, когда мызапустите определенный файл из командной строки, используя команду cypress run --env configFile = environment-2, все тестовые случаи пройдены, поскольку посещение ('/') автоматически заменяется соответствующими средами, ожидающими тестовый случай API.

Я не уверен, как следует изменить тест API для вызова конечной точки API вместо базового URL.

Может кто-нибудь помочь, пожалуйста?

Спасибо, Индху.

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Эта проблема была решена.

Лучший способ - это сделать с плагином, как предложено их документами (https://docs.cypress.io/api/plugins/configuration-api.html#Usage).

. Я сохранил структуру как таковую в своем вопросе и в моем тестовом примере, который я назвалиспользуя cy.request (Cypress.env ('api_server'))

Это решило мою проблему :)

0 голосов
/ 16 мая 2019

Если я правильно понимаю ваш вопрос, вам нужно запустить тесты с разными URL.URL-адреса устанавливаются в cypress.json или в env-файле.Вы можете настроить URL в файле cypress.json, как показано ниже.Хотя я не пробовал, можете ли вы попробовать?

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

Внутри тестового вызова передайте URL, как показано ниже;

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..
    })
})
...