🏠 Итоговая самопроверка курса Auto QA
⚡ Финальный чек-лист
- Умею писать pytest-тесты с assert и фикстурами
- Умею управлять браузером через Selenium WebDriver
- Знаю все основные локаторы: By.ID, By.CSS_SELECTOR, By.XPATH
- Умею применять явные ожидания (WebDriverWait + EC)
- Знаю паттерн Page Object Model, умею создавать BasePage
- Умею тестировать HTTP API через requests
- Умею добавлять Allure-разметку, шаги, вложения к тестам
Это не LMS-ДЗ. Summary session 8 — финальный урок-повторение. Отдельного домашнего задания в LMS нет. Здесь — итоговая самопроверка с практическим заданием, которое объединяет все темы курса. Убедитесь, что прошли финальный тест и заполнили анкету обратной связи по модулю (из лекции: «Важное задание»).
Итоговый чек-лист знаний
Пройдите по каждому пункту и убедитесь, что можете ответить без подсказки.
Блок 1: Unit-тесты и pytest
- Знаете разницу между
unittestиpytest - Умеете писать тесты с
assert,@pytest.fixture,@pytest.mark.parametrize - Понимаете пирамиду тестирования: Unit → Integration → UI
- Знаете, что такое
scopeу фикстуры: function / class / module / session
Блок 2: Selenium WebDriver
- Умеете запустить браузер, открыть URL, найти элемент и выполнить действие
- Знаете все локаторы: By.ID, By.NAME, By.CLASS_NAME, By.CSS_SELECTOR, By.XPATH, By.LINK_TEXT
- Умеете работать с явными ожиданиями:
WebDriverWait(driver, 10).until(EC.xxx) - Знаете, когда использовать
implicitly_wait, а когда —WebDriverWait - Умеете работать с Alert, iframe, вкладками, ActionChains
Блок 3: Page Object Model
- Понимаете суть паттерна POM: страница = класс с методами-действиями
- Умеете создать
BasePageс общими методами - Знаете, как организовать
BaseTestс фикстурой управления драйвером - Умеете использовать
scope="class"для оптимизации
Блок 4: API-тестирование с Requests
- Умеете отправлять GET, POST, PATCH, DELETE через
requests - Знаете объект
Response:status_code,json(),text,headers - Умеете создать класс-обёртку (например,
CompanyApi) - Всегда проверяете
status_codeперед чтением тела ответа
Блок 5: Allure-отчётность
- Умеете установить и запустить Allure с pytest
- Знаете все декораторы:
@allure.epic/feature/story/title/severity/id - Умеете добавлять шаги через
with allure.step()и@allure.step - Умеете добавлять вложения через
allure.attach() - Знаете, что
@allure.idне отображается в отчёте Allure
Подготовка окружения для финальной практики
1. Виртуальное окружение (PowerShell)
# Создать виртуальное окружение
python -m venv venv
# Активировать
venv\Scripts\Activate.ps1
# Установить все зависимости курса
pip install pytest allure-pytest selenium webdriver-manager requests sqlalchemy
2. Структура финального проекта
final_project/
├── venv/
├── pages/
│ ├── base_page.py # BasePage — общие методы Selenium
│ └── login_page.py # Конкретная страница (пример)
├── api/
│ ├── company_api.py # CompanyApi с @allure.step
│ └── company_table.py # CompanyTable с @allure.step
├── tests/
│ ├── conftest.py # Фикстуры pytest
│ └── test_companies.py # Тесты с Allure-разметкой
├── run.ps1 # Скрипт автозапуска (Windows)
└── requirements.txt
Финальное практическое задание
Соберите всё изученное в один проект: возьмите тесты CompanyApi из урока 15, добавьте к ним полную Allure-разметку и настройте автоматическую генерацию отчёта.
Шаг 1: Полная разметка тестового класса
# tests/test_companies.py
import allure
from api.company_api import CompanyApi
from api.company_table import CompanyTable
BASE_URL = "https://x-clients-be.onrender.com"
@allure.epic("компании")
@allure.severity("blocker")
class TestCompanies:
api = CompanyApi(BASE_URL)
# db = CompanyTable("postgresql://...") # если есть доступ к БД
@allure.id("ITCH-1")
@allure.story("Получение списка компаний")
@allure.feature("READ")
@allure.title("Получение полного списка организаций")
def test_get_companies(self):
result = self.api.get_company_list()
assert isinstance(result, list)
assert len(result) > 0
@allure.id("ITCH-2")
@allure.story("Получение списка компаний")
@allure.feature("READ")
@allure.title("Получение списка активных организаций")
@allure.description("Запрос организаций с параметром active = true")
def test_get_active_companies(self):
result = self.api.get_company_list(params_to_add={"active": "true"})
for company in result:
assert company.get("isActive") is True
@allure.id("ITCH-3")
@allure.story("Создание компаний")
@allure.feature("CREATE")
@allure.title("Создание организации")
def test_add_company(self):
with allure.step("Получить количество организаций ДО"):
len_before = len(self.api.get_company_list())
with allure.step("Создать организацию"):
company = self.api.create_company("AutoTest Co", "Created by autotest")
new_id = company["id"]
with allure.step("Проверить, что список вырос на 1"):
len_after = len(self.api.get_company_list())
assert len_after - len_before == 1
with allure.step("Удалить тестовую организацию"):
self.api.delete_company(new_id)
Шаг 2: run.ps1 — автозапуск (Windows)
# run.ps1
$results = "allure-results"
$report = "allure-report"
Remove-Item -Recurse -Force $results -ErrorAction SilentlyContinue
Remove-Item -Recurse -Force $report -ErrorAction SilentlyContinue
pytest tests/ --alluredir=$results -v
allure generate $results -o $report --clean
allure open $report
Шаг 3: Запуск
# В PowerShell из папки проекта
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
.\run.ps1
Шаг 4: Проверка в VS Code
// .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "pytest: test_companies (Allure)",
"type": "debugpy",
"request": "launch",
"module": "pytest",
"args": [
"tests/test_companies.py",
"-v",
"--alluredir=allure-results"
],
"cwd": "${workspaceFolder}"
}
]
}
Запуск через F5: тесты выполнятся с генерацией Allure-данных. Поставьте точку останова на assert len_after - len_before == 1 — сможете увидеть значения переменных в панели Variables.
Связь с теорией
- Теория: Allure-декораторы и шаги
- Примеры: полный CompanyApi с @allure.step
- Ошибки: не путайте @allure.id с видимым ID в отчёте
Поздравляем с завершением курса Auto QA!
Вы прошли путь от первых unit-тестов до полноценных API-тестов с Allure-отчётностью. Теперь в вашем арсенале:
- pytest с фикстурами и параметризацией
- Selenium WebDriver: локаторы, ожидания, ActionChains, POM
- API-тестирование через requests с классами-обёртками
- Allure: разметка, шаги, вложения, автогенерация отчётов
Следующий шаг — интеграция тестов в CI/CD, параллельный запуск и Docker. Вы справитесь!