Один из лучших приемов автоматизации тестирования - отделение тестовых данных от тестовых файлов. Этот аспект является одним из основных требований при разработке тестовой среды. Cypress помогает нам разделять тестовые данные с помощью кипарис арматура. В этой теме мы будем обсуждать Светильники Cypress с практической реализацией и примерами в реальном времени
Содержание
- Что такое приспособление в Cypress?
- Как использовать светильники Cypress в тестах?
- Как читать данные из светильников в Cypress?
- Доступ к значениям из файла фикстур в тестовый файл
- Cypress Multiple светильники
Что такое приспособление в Cypress?
Крепления Cypress можно использовать исходные данные из внешних файлов. Светильники в Cypress помогут вам читать или записывать в файлы. Одна из популярных платформ в автоматизации тестирования - это среда, управляемая данными, где мы отделяем данные от тестовых файлов. Обычно мы храним данные во внешнем файле, таком как Excel, и читаем их с помощью внешних библиотек. Cypress предоставляет нам ту же функцию для чтения данных из файлов.
Cypress предоставляет нам папку под названием приспособления, где мы можем создавать файлы JSON и читать из них данные, где мы можем читать эти файлы в нескольких тестовых файлах. Мы будем хранить данные как ключ-значение пару и получить к ним доступ.
Как использовать приспособления Cypress в тестах?
Мы можем получить доступ к приборам Cypress с помощью следующего синтаксиса, приведенного ниже
cy.fixture(filePath)
cy.fixture(filePath, encoding)
cy.fixture(filePath, options)
cy.fixture(filePath, encoding, options)
Разберемся с параметрами, которые можно передать в фикстурах
Путь файла - путь к месту, где вы сохранили свои тестовые данные
кодирование - Кодировка, которая используется при использовании файла. Некоторые из кодировок - ascii, base64, hex, binary и т. Д.
опционы - В опциях мы можем передать Тайм-аут отклик. Укажите время ожидания для разрешения cy.fixture ()
Как читать данные из светильников в Cypress?
Мы будем определять тестовые данные в файле под зажимное приспособление папка. Мы будем получать доступ к тестовым данным из файла JSON в тестовом скрипте, используя фикстуры Cypress.
Теперь давайте разберемся пример для кипариса приспособления. Мы будем входить в URL-адрес, используя имя пользователя и пароль. Итак, давайте сохраним значения имени пользователя и пароля в файле.
Давайте создадим файл с именем учетные данные.json в папке приспособлений. Мы будем определять переменные в формате JSON.
{
"username" : "admin@yourstore.com",
"password" : "admin",
"adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}

Доступ к значениям из файла Fixture в тестовый файл
Поскольку мы определили наши значения JSON в учетные данные.json file, мы увидим, как мы можем получить к ним доступ в нашем тестовом файле, используя фикстуры Cypress.
Мы получим доступ к данным прибора, используя this
ключевое слово в хук перед
описать("Пример Cypress Fixtures", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) })
В приведенном выше примере мы получаем доступ к нашему файлу JSON через cy.fixture ('учетные данные'). Поскольку имя нашего файла JSON - учетные данные.json, мы передача имени файла в cy.fixture (). Теперь мы используем концепцию псевдонима и определяем наши данные как тестовые данные. С переменной тестовые данные, мы можем использовать значения имени пользователя и пароля в нашем тестовом файле
описать("Пример Cypress Fixtures", function () { before(function () { cy.fixture('credentials').then(function (testdata) { this.testdata = testdata }) }) it("Войти с действительными учетными данными ", function () { cy.visit(this.testdata.adminUrl) cy.get('[id=Email]').clear() cy.get('[id=Email]').type(this.testdata .username) cy.get('[id=Password]').clear() cy.get('[id=Password]').type(this.testdata.password) cy.get('[type=submit] ').click();cy.url().should('be.equal', this.testdata.adminUrl) }); });
Как видно выше, в .type()
мы передаем значение из нашего файла credentials.json как это.testdata.имя пользователя. Точно так же для пароля мы получаем доступ к значению, используя этот.testdata.пароль. Для URL-адреса мы используем тот же способ, что и имя пользователя и пароль.
Когда мы запускаем тестовый пример, вы можете увидеть, как значение печатается на панели управления. Таким образом, мы выполнили наш тестовый пример с использованием Cypress Fixtures.

Cypress Multiple светильники
В этом разделе мы поймем, как использовать Cypress Fixtures с несколькими файлами фикстур.
Если мы хотим использовать разные данные фикстур для одного и того же тестового файла, например, есть два набора учетных данных, которые нам нужно проверить для страницы входа, как мы можем получить доступ к файлам?
Один из способов - написать несколько it блоки, которые будут повторять один и тот же код снова и снова. С другой стороны, мы можем использовать Приспособления Cypress для доступа к различным тестам данные в файле спецификаций. Давайте посмотрим, как мы можем добиться этого с помощью приборов Cypress.
У нас уже есть файл фикстуры под названием учетные данные.json.
{
"username" : "admin@yourstore.com",
"password" : "admin",
"adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
Теперь давайте создадим еще один файл фикстуры с именем userData.json где мы будем использовать другое неверное имя пользователя и пароль.
{
"username" : "user@yourstore.com",
"password" : "user",
"adminUrl" : "https://admin-demo.nopcommerce.com/admin/"
}
Теперь давайте посмотрим, как мы можем получить доступ к двум различным данным в нашем тестовом файле.
Мы проведем рефакторинг одного и того же тестового файла, используя условие использования двух разных файлов фикстур.
const testValueFixtures = [ { "name": "учетные данные", "context": "1" }, { "name": "userData", "context": "2" } ] description('Automation Test Suite - Fixtures', function () { //перебор обоих фикстур testValueFixtures.forEach((fixtureData) => { description(fixtureData.context, () => { // доступ к тестовым данным из файла фикстуры before(function () { cy. приспособление(fixtureData.name).then(function (testData) { this.testData = testData; }) }) it("login", function () { cy.visit('https://admin-demo.nopcommerce.com /admin/') cy.get('[id=Email]').clear() cy.get('[id=Email]').type(this.testData.username) cy.get('[id= Пароль]').clear() cy.get('[id=Password]').type(this.testData.password) cy.get('[type=submit]').click(); cy.url( ).should('be.equal', this.testData.adminUrl) }) }) }) })

Изначально мы создаем переменную с именем testValueFixtures как массив где мы создаем контекст двух файлов фикстур. В первом контексте мы передаем имя как 'Полномочия'а второй как'данные пользователя', поскольку они представляют наши имена файлов JSON, в которых мы определили наше значение.
Во-вторых, мы перебираем обе переменные фикстуры в блоке описания. И, как мы обсуждали ранее, мы получаем доступ к данным до блока, используя .this()
Остальная часть кода такая же, где мы передаем данные в cy.get()
Когда мы выполняем наш тест, он будет работать в двух наборах, где первый случай проходит с действительными учетными данными, а второй терпит неудачу из-за неверных учетных данных.

Как вы можете видеть на снимке выше, первый тестовый пример прошел, и в него было введено значение из первого файла фикстуры. учетные данные.json

Как вы можете видеть на приведенном выше снимке экрана, тест не прошел, и переданные значения взяты из второго файла фикстур. userData.json
Вы также можете увидеть, как писать фикстуры Cypress, используя объектную модель страницы. здесь