Фикстуры Cypress используются для хранения тестовых данных для автоматизации, а папка fixtures размещается внутри проекта Cypress. В папке fixtures хранятся JSON-файлы, содержащие тестовые данные, которые могут быть прочитаны несколькими тестами. Мы храним эти данные в формате ключ-значение, что позволяет обращаться к ним в наших тестовых сценариях.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Как использовать фикстуры в тестах Cypress?
Для моделирования в этой статье я буду использовать фиктивный сайт автоматизации тестирования zero.webappsecurity.com.
Этот сайт опубликован компанией Micro Focus Fortify с единственной целью — продемонстрировать функциональность и эффективность продуктов WebInspect компании Micro Focus Fortify в обнаружении уязвимостей веб-приложений и создании отчетов о них.
Данный сайт не является реальным банковским сайтом, и любое сходство с продуктами и/или сайтами сторонних производителей является чисто случайным. Для доступа к сайту можно перейти по этой ссылке.
Запись тестовых данных
Тестовые данные хранятся в папке 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».
