Можно ли использовать прямые запросы к БД в функциональном тесте?
Итак Есть функциональный тест для API, который должен проверить, возвращает ли запрос корректное количество записей, выбранных по определенным критериям, причем ожидаемое количество записей вбито прямо в код. Есть второй функциональный тест, который проверяет например удаление записи.
Если я запускаю группу тестов и тест на удаление записи проходит первым, то первый тест уже будет ошибочным.
Вопрос в том, корректно ли в функциональном тесте использовать прямые запросы к БД для получения актуального ожидаемого количества записей?
Корень проблемы здесь в том, что нарушен основной принцип автоматизации тестирования: изоляция тестов. Другими словами, никакой тест не должен влиять на прохождение других тестов.
Перед выполнением каждого теста должны быть обеспечены соответствующие предусловия и не придется делать прямых запросов к БД.
Например, если какой-то тест проверяет количество записей, то в setUp обязательно должно создаться это количество записей (каким образом - это уже другой вопрос). В этом и заключается суть изоляции - для каждого теста есть свой (и только) набор данных, с которыми тесты могут делать все что угодно и другим тестам на это фиолетово.