TGViewer
Валерий | AQA Engineer | Автотестирование на Python | REST, gRPC, GraphQL Валерий | AQA Engineer | Автотестирование на Python | REST, gRPC, GraphQL @aqa_engineer · 1.52K subscribers
Post #157 608
Способы проектирования архитектуры API тестов.

ЧАСТЬ 3. BaseCase Pattern

Сегодня поговорим про еще один паттерн, который я называю BaseCase Pattern.

Его можно использовать как самостоятельно, так и в прекрасной комбинации с паттерном, о котором я говорил в части 2.
https://t.me/AQA_Engineer/145

Суть его заключается в следующем:

Создается класс BaseCase. В нем мы можем инициализировать необходимые клиенты, писать общие фикстуры, которые могут переиспользоваться.

Главное, что необходимо сделать — это наследовать класс с тестами от базового тест-кейса (BaseCase). Все классы-наследники будут иметь доступ к методам и свойствам, описанным в родительском классе.

class BaseCase:
@pytest.fixture(scope="session")
def http_dm_api_account_service(self):
client = HTTPDmApiAccountFacade()
return client


class TestsPostV1Account(BaseCase):
@pytest.fixture(scope="session")
def my_client(self, http_dm_api_account_service):
"""
Фикстура приведена для примера показать, что можем использовать в тестах фикстуры из BaseCase
Тут можно добавить свою логику, например авторизацию и т.д.
"""

return http_dm_api_account_service

def test_post_v1_account(self, my_client) -> None:
my_client.account_api.post_v1_account_for_test()

def test_post_v1_account_base(self, http_dm_api_account_service) -> None:
http_dm_api_account_service.account_api.post_v1_account_for_test()


Плюсы:

1. Прост в применении
2. Удобное масштабирование, достаточно создать класс наследник для своего сьюта и реализовывать там вспомогательную логику.
3. Легко читается и поддерживается.
4. Можно использовать, как отдельно инкапсулируя вспомогательную логику внутри класса наследника, так и использовать в качестве фасада для удобного доступа к клиентам

Минусы:
1. Тоже может возникнуть дублирование кода, ситуация схожая с Handler Pattern, но в отличие от него, достаточно удобно сделать перенос в класс более высокого уровня.

Резюме, паттерн классный, я стараюсь его использовать вместе с Helper Pattern.

Пишите какие паттерны встречали вы, или может есть что добавить к текущему посту.

TG-сообщество | Обучение |Отзывы
  • 💩 35
  • 👍 6
More from @aqa_engineer
  1. Sep 2, 2026💙💙💙💙💙 Маленькое напоминание о большой дате: где стоит провести День программиста⬆️ Ар…
  2. Sep 2, 2026Привет, давно меня не было пригар по работе, что совсем не успеваю ничего. За что прошу пр…
  3. Jul 16, 2026👩‍💻 В мае-июне я проходила курс «Автоматизация тестирования Rest API Advanced (Python)»…
  4. Jun 10, 2026Привет! Уже на следующей неделе у меня стартуют. Автоматизация тестирования брокеров сообщ…
  5. Jun 8, 2026Несколько месяцев назад я спросил, какой технический тренинг вам был бы действительно инте…
  6. Jun 6, 2026Материалы для тех, кто в теме. Одна из самых больших проблем при развитии в IT - это возмо…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →