Порядок запуска тестов или как правильно спроектировать тесты

design-patterns
database
architecture
test-data
api
execution
Теги: #<Tag:0x00007fedb9b54a38> #<Tag:0x00007fedb9b54880> #<Tag:0x00007fedb9b54718> #<Tag:0x00007fedb9b54588> #<Tag:0x00007fedb9b54448> #<Tag:0x00007fedb9b542e0>

(rmerkushin) #24

А что если первые тесты на создание сущности не пройдут?) Удалять будет нечего. Не очень хороший подход.


(Ivan Pletin) #25

всегда есть шанс что предыдущий тест завалится, согласен. но доступа к БД у меня небыло. и мой подход оказался самым простым


(Alexandr Navara) #26

По возможности - из разработки. Если функционала недостаточно - то расширяю своими методами и переиспользую код разработчиков через делегирование или наследование. Код используемый в разработке не изменяется под нужды тестирования.
А Вы как?


(Eugeniylennik) #27

Да в ваше ситуации все таки не прямая, но зависимость имеется, и именно от этой ситуации я и хочу избавиться, чтобы тесты не создавали данных или сущностей для других тестов. Раньше у меня было реализовано так, если рассматривать на вашем примере, тест на создание папки, тут впринципе никаких дополнительных сущностей не надо, тест выполнился создал папку, после того как тест выполнился в посткондишенах эта папка удаляется. В тесте по удалению папки, в прекондишенах сначала создается папка, а сам тест проверяет удаление этой папки. В этой реализации есть как и плюсы так и минусы, тесты получаются более назависимыми, но появляются лишние манипуляции, если рассмотреть вариант что таких тестов будет 100, что затратно увеличивает время прогонки тестов.


(rmerkushin) #28

Ну я повидал много “прекрасного” кода от разработчиков…

так что предпочитаю никому не доверять. Ну и у меня нет возможности реюзать ORM. У нас его либо не используют, либо пишут на Java, в общем мне с этим не по пути. Так что я юзаю пока что raw sql.


(Eugeniylennik) #29

По поводу не использования методов API, для создания сущностей, сейчас у нас есть несколько проектов по автоматизации, все они относятся к одному web-проекту. Есть проект по автоматизации UI, в нем используется классическая связка Selenium+Selenide+TestNG. Есть проект по автоматизации API, в нем используется встроенный Spring фреймворк RestTemplate. Все проекты включены в один проект, которые собирается с помощью Gradle. Почему мне проще использовать API для создания сущностей, я в UI проект добавил зависимость проекта по API, и могу спокойно брать готовые описанные методы и применять их в UI .


(rmerkushin) #30

Используя API от разработчиков вы рискуете пропустить ошибки, т.к. API может некорректно работать. Да это может быть удобно, но есть определенные риски :slight_smile: