⚡ Ключевые команды курса
# pytest
pytest test_file.py -v
pytest --alluredir=allure-results
# Allure
allure serve allure-results
allure generate allure-results -o allure-report --clean
# Selenium
pip install selenium webdriver-manager
driver = webdriver.Chrome()
driver.get("https://example.com")
driver.find_element(By.ID, "btn").click()
# Requests
import requests
resp = requests.get(url)
assert resp.status_code == 200
data = resp.json()
Allure: установка и запуск
| Команда | Описание |
pip install pytest allure-pytest | Установить pytest и плагин Allure |
pytest --alluredir=allure-results | Запустить тесты, сохранить данные для отчёта |
allure serve allure-results | Открыть интерактивный отчёт в браузере (веб-сервер) |
allure generate allure-results -o allure-report --clean | Сгенерировать статический HTML-отчёт |
allure open allure-report | Открыть готовый HTML-отчёт в браузере |
Allure: декораторы разметки
| Декоратор | Пример | Описание |
@allure.epic | @allure.epic("компании") | Принадлежность к проекту/модулю |
@allure.feature | @allure.feature("READ") | Функциональная группа |
@allure.story | @allure.story("Получение списка") | Конкретный сценарий |
@allure.title | @allure.title("Получение всех компаний") | Читаемое название теста |
@allure.description | @allure.description("Запрос с active=true") | Подробное описание |
@allure.severity | @allure.severity("blocker") | Критичность теста |
@allure.id | @allure.id("ITCH-1") | ID для навигации в коде (не в отчёте) |
Allure: шаги и вложения
| Синтаксис | Применение |
with allure.step("описание"): | Контекстный менеджер — шаг внутри теста |
@allure.step("описание") | Декоратор на метод — весь метод = один шаг |
@allure.step("api. Метод '{param}'") | Автоподстановка параметра из аргумента метода |
allure.attach(content, "title", type) | Вложение: текст, скриншот, JSON и др. |
allure.attachment_type.TEXT | Тип вложения — текст (SQL, лог) |
allure.attachment_type.PNG | Тип вложения — изображение |
pytest: ключевые команды
| Команда | Описание |
pytest test_file.py -v | Запуск с подробным выводом |
pytest test_file.py -v -s | С выводом print/logging |
pytest test_file.py::test_func -v | Запуск конкретного теста |
pytest -k "company" | Запуск тестов, содержащих "company" в имени |
pytest -m smoke | Запуск тестов с маркером smoke |
@pytest.fixture(scope="class") | Фикстура на уровне класса |
@pytest.mark.parametrize("x", [1,2,3]) | Параметризованный тест |
Selenium WebDriver: основные операции
| Операция | Код |
| Запуск браузера | driver = webdriver.Chrome() |
| Открыть URL | driver.get("https://example.com") |
| Найти элемент | driver.find_element(By.ID, "username") |
| Найти несколько | driver.find_elements(By.CLASS_NAME, "item") |
| Кликнуть | element.click() |
| Ввести текст | element.send_keys("text") |
| Очистить поле | element.clear() |
| Явное ожидание | WebDriverWait(driver, 10).until(EC.visibility_of_element_located(...)) |
| Закрыть браузер | driver.quit() |
Requests: основные методы
| Метод | Код | Когда использовать |
| GET | requests.get(url) | Получение данных |
| POST | requests.post(url, json=data) | Создание ресурса |
| PATCH | requests.patch(url, json=data) | Частичное обновление |
| PUT | requests.put(url, json=data) | Полное обновление |
| DELETE | requests.delete(url) | Удаление ресурса |
Requests: объект Response
| Атрибут/метод | Возвращает |
resp.status_code | int: 200, 201, 404, 500… |
resp.json() | dict или list (Python-объект) |
resp.text | str — тело ответа как строка |
resp.headers | dict заголовков ответа |
resp.url | str — итоговый URL запроса |
Уровни критичности Allure Severity
| Значение | Описание |
blocker | Критично — блокирует весь прод |
critical | Важно — критичная функциональность |
normal | Обычный приоритет |
minor | Незначительный баг |
trivial | Косметический дефект |