<style>.lazy{display:none}</style>Что такое фикстуры в Cypress?

Что такое фикстуры в Cypress?

Фикстуры Cypress используются для хранения тестовых данных для автоматизации, а папка fixtures размещается внутри проекта Cypress. В папке fixtures хранятся JSON-файлы, содержащие тестовые данные, которые могут быть прочитаны несколькими тестами. Мы храним эти данные в формате ключ-значение, что позволяет обращаться к ним в наших тестовых сценариях.

БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"

Как использовать фикстуры в тестах Cypress?

Для моделирования в этой статье я буду использовать фиктивный сайт автоматизации тестирования zero.webappsecurity.com.

Этот сайт опубликован компанией Micro Focus Fortify с единственной целью – продемонстрировать функциональность и эффективность продуктов WebInspect компании Micro Focus Fortify в обнаружении уязвимостей веб-приложений и создании отчетов о них.

Данный сайт не является реальным банковским сайтом, и любое сходство с продуктами и/или сайтами сторонних производителей является чисто случайным. Для доступа к сайту можно перейти по этой ссылке.

Запись тестовых данных

Тестовые данные хранятся в папке fixtures:

Дерево каталогов в VSCode, выделена папка fixtures

Внутри папки создается файл в формате JSON или другом формате. Данные хранятся в парах “ключ:значение”. Для данной симуляции входа в систему я создам файл user.json. Мы можем задать наши тестовые данные следующими значениями:

{
    “username”: “invalid_username”,
    “password”: “invalid_password”
}

Реализация автоматизации тестирования в Cypress выглядит следующим образом:

describe(‘Login with Fixture Data’, ()=>{
    it(‘should try to login’, () =>{
        cy.visit(‘http://zero.webappsecurity.com/login.html')
        
        cy.fixture(‘user’).then(user => {
            const username = user.username
            const password = user. password
            cy.get(‘#user_login’).type(username)
            cy.get(‘#user_password’).type(password)
            cy.contains(‘Sign in’).click()
        })
    })
})

Как видим, с помощью cy.fixture я получаю данные из файла фикстур user.json. Полученные значения используются для заполнения полей имени пользователя и пароля. Сохраните приведенные выше тестовые файлы и запустите тест в соответствии с шагами, описанными в статье “End-to-End тестирование с Cypress”.

Запуск динамических тестовых данных

В этом разделе я покажу пример использования файла фиксктур, который содержит массив данных, и хочу использовать загруженные данные в качестве тестовых. Я создам файл userDynamic.json со следующими данными:

{
    “data”: [
      {
        “username”: “username1”,
        “password”: “password1”
      },
      {
        “username”: “username2”,
        “password”: “password2”
      }
    ]
}

Реализация автоматизации тестирования в Cypress выглядит следующим образом:

describe(‘Login with Fixture Data’, ()=>{
    it(‘should try to login’, () =>{
        cy.visit(‘http://zero.webappsecurity.com/login.html')
        
        cy.fixture(‘userDynamic’)
        .its('data')
        .then(user => {
            user.forEach((user) => {
                const username = user.username
                const password = user. password
                cy.get(‘#user_login’).type(username)
                cy.get(‘#user_password’).type(password)
                cy.contains(‘Sign in’).click()
            })
        })
    })
})

Сохраните описанные выше тестовые файлы и запустите тест. Он выполнит итерацию по массиву данных из файла dataDynamic.json и использует полученные значения для заполнения полей имени пользователя и пароля.

Заключение

Фикстуры обеспечивают разделение тестовых данных и тестового сценария и позволяют использовать в тесте внешние данные. Они также позволяют использовать в тесте наборы входных данных.

Перевод статьи «Cypress Test: How to Separate Test Data Using Fixture».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *