Cypress.env
переменные окружения get и set в ваших тестах.
Руководство по переменным окружения описывает другие способы их настройки вне ваших тестов.
Область видимости
Переменные окружения, заданные с помощью
Cypress.env, действуют только для текущего файла спецификаций.Cypress выполняет каждый файл спецификаций изолированно: браузер закрывается между спецификациями. Переменные окружения, добавленные или измененные в одной спецификации, не будут видны в других спецификациях.
Разница между переменными окружения на уровне ОС и переменными окружения Cypress
В Cypress «переменные окружения» — это переменные, доступные через
Cypress.env. Они не являются теми же, что и переменные окружения на уровне ОС. Однако, можно задать переменные окружения Cypress из переменных окружения на уровне ОС.
Синтаксис
Cypress.env()
Cypress.env(name)
Cypress.env(name, value)
Cypress.env(object)
Аргументы
name (Строка)
Имя переменной окружения, которую нужно получить или задать.
value (Строка)
Значение переменной окружения, которую нужно задать.
object (Объект)
Задать несколько переменных окружения с помощью объекта.
Примеры
Без аргументов
Получить все переменные окружения из файла конфигурации (cypress.json по умолчанию)
{
"env": {
"foo": "bar",
"baz": "quux"
}
}
Cypress.env() // => {foo: "bar", baz: "quux"}
Имя
Возвратить одну переменную окружения из файла конфигурации (cypress.json по умолчанию)
Булево значение
Мы автоматически нормализуем ключ и значение, переданные через командную строку. Cypress автоматически преобразует значения в Число или Булево.
CYPRESS_HOST=laura.dev CYPRESS_IS_CI=true CYPRESS_MY_ID=123 cypress run
Cypress.env('HOST') // => "laura.dev"
Cypress.env('IS_CI') // => true
Cypress.env('MY_ID') // => 123
Имя и значение
Изменить переменные окружения из файла конфигурации (cypress.json по умолчанию) внутри ваших тестов
Область видимости
Помните, что любые изменения, которые вы вносите в переменные окружения с помощью этого API, будут действовать только на оставшуюся часть тестов в том же файле спецификаций.
{
"env": {
"foo": "bar",
"baz": "quux"
}
}
Cypress.env('host', 'http://server.dev.local')
Cypress.env('host') // => http://server.dev.local
Объект
Переопределить несколько значений из файла конфигурации (cypress.json по умолчанию), передав объект.
// cypress.json
{
"env": {
"foo": "bar",
"baz": "quux"
}
}
Cypress.env({
host: 'http://server.dev.local',
foo: 'foo',
})
Cypress.env() // => {foo: "foo", baz: "quux", host: "http://server.dev.local"}
Из плагина
Вот пример, который использует Cypress.env для доступа к переменной окружения, которая была динамически задана в плагине.
Используйте этот подход, чтобы получить значение переменной окружения один раз перед запуском любых тестов в вашей спецификации.
// cypress/plugins/index.js
module.exports = (on, config) => {
config.env.sharedSecret =
process.env.NODE_ENV === 'qa' ? 'hoop brick tort' : 'sushi cup lemon'
return config
}
// cypress/integration/secrets_spec.js
describe('Environment variable set in plugin', () => {
let sharedSecret
before(() => {
sharedSecret = Cypress.env('sharedSecret')
})
it.only('can be accessed within test.', () => {
cy.log(sharedSecret)
})
})
Примечания
Зачем мне нужны переменные окружения?
Руководство по переменным окружения объясняет общие варианты использования.
Можно ли передать переменные окружения из командной строки?
Да. Вы можете сделать это и многое другое.
Руководство по переменным окружения описывает другие способы настройки переменных окружения для ваших тестов.
Почему Cypress.env , а не cy.env?
Как правило, все, что вы вызываете из Cypress , влияет на глобальное состояние. Все, что вы вызываете из cy , влияет на локальное состояние.
Поскольку переменные окружения, добавленные или измененные Cypress.env , действуют только в пределах текущего файла спецификации, можно подумать, что это должно быть cy.env , а не Cypress.env… и вы правы. Тот факт, что Cypress.env влияет на локальное состояние, является артефактом эволюции API со временем: Cypress.env раньше влиял на глобальное состояние — переменные окружения, добавленные в одном файле спецификации тестов, были доступны в других спецификациях — но команда Cypress мудро сделала каждый запуск спецификации изолированным в 3.0.0, и к тому времени Cypress.env был общедоступным API.
См. также
- Руководство по переменным окружения
- конфигурация
© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/cypress-api/env