Ответ
В проекте применялся полиглотный стек, выбранный под конкретные задачи:
- Python — основной язык для API и E2E-автотестов (фреймворк pytest с библиотеками Selenium WebDriver и Requests).
- JavaScript — для тестирования фронтенда с использованием Cypress.
- SQL — для валидации данных и сложных проверок в БД PostgreSQL.
- Bash/Shell — для скриптов в пайплайнах CI/CD (GitLab).
- Java — для поддержки и доработки legacy-модулей с JUnit 4.
Пример автотеста на Python (pytest + Requests):
import pytest
import requests
API_URL = "https://api.example.com/login"
def test_successful_login():
"""Проверка успешной аутентификации."""
credentials = {"username": "test_user", "password": "secure_pass"}
response = requests.post(API_URL, json=credentials)
assert response.status_code == 200
response_data = response.json()
assert "access_token" in response_data
assert isinstance(response_data["access_token"], str)
Выбор языков определялся технологическим стеком продукта и принципом использования подходящего инструмента для задачи.
Ответ 18+ 🔞
А, ну это ж классика, блядь! Смотри, как у нас тут всё устроено, ёпта. Проект — он как многослойный пирог, только вместо теста — код, а вместо крема — мат в чатиках. И для каждого слоя свой инструмент, чтоб не получилось говно вместо системы.
Вот смотри, какой у нас тут зоопарк языков накопился, просто овердохуища:
- Python — это наш главный по тарелочкам, блядь. На нём все эти APIшки и полные автотесты от начала и до конца (E2E, ёпта). Двигаемся на pytest, а если надо в браузер тыкать — Selenium WebDriver, а если по HTTP стучать — Requests. Универсальная дубина, в общем.
- JavaScript — а это когда нужно фронтенд пощупать, чтобы он не выёбывался. Тут в дело идёт Cypress, который всё красиво и быстро делает, почти как магия, только без волшебной палочки, блядь.
- SQL — о, это святое! Когда нужно не просто "ой, ответ пришёл", а проверить, а не наёбывает ли нас база? Данные там записались, удалились, обновились? Для этого наш PostgreSQL и мозги, заточенные под сложные запросы. Без этого — нихуя не тестирование, а гадание на кофейной гуще.
- Bash/Shell — ну а куда ж без этого, блядь? Всякие скриптики в пайплайнах CI/CD (у нас GitLab, если что). Запустить, собрать, развернуть, почистить за собой — вот это всё. Работа грязная, но кто-то же должен её делать.
- Java — а это, сука, наше legacy-наследие, ядрёна вошь! Старые модули, которые ещё живы, и их тоже надо поддерживать и иногда даже дорабатывать. Сидим, ковыряем JUnit 4 и вспоминаем молодость. Но без этого никуда, иначе всё рухнет, как карточный домик.
Выбор, блядь, простой как три копейки: какой стек у продукта — такой и у тестов. Нехуй на Python'е фронтенд гонять, если есть Cypress, и нехуй SQL'ные проверки в коде пихать, когда можно одним запросом всё выяснить. Инструмент — под задачу, ёпта!
Вот, глянь, как это на Питоне выглядит (pytest + Requests):
import pytest
import requests
API_URL = "https://api.example.com/login"
def test_successful_login():
"""Проверка успешной аутентификации."""
credentials = {"username": "test_user", "password": "secure_pass"}
response = requests.post(API_URL, json=credentials)
assert response.status_code == 200
response_data = response.json()
assert "access_token" in response_data
assert isinstance(response_data["access_token"], str)
Видишь? Всё чётко, без лишней воды. Отправили запрос, получили ответ, проверили, что токен есть и он строка. И никаких, блядь, танцев с бубном! Вот так и живём.