Набор автотестов, который останется с вашим проектом после курса
xfailСвой: курсовой, дипломный, сайт или приложение, которое вы делали на других дисциплинах, — на любом языке. Цель курса — чтобы у вашего проекта остались тесты, которые запускаются одной командой.
| Что есть в проекте | Как быть |
|---|---|
| Веб-интерфейс и API | Полный объём: модульные, API, UI |
| Веб-интерфейс без API | API-тесты заменяются HTTP-проверками форм через requests (как регистрация в «Задачнике») |
| Нет веб-интерфейса (консольная программа, библиотека) | Вместо API и UI — больше модульных тестов и тесты запуска программы (subprocess: аргументы, вывод, код возврата) |
| Модульные тесты не на Python | Пишутся на языке проекта (раздел 05), API и UI — на Python; в CI — два задания |
| Своего проекта нет | «Задачник» 1.1: ваш набор из практик курса, доведённый до объёма ниже |
| Часть | Минимум | Раздел курса |
|---|---|---|
| Модульные тесты | 5 тестов (параметризованный тест с вариантами считается одним); хотя бы один с заглушкой или подменой даты | 03–05 |
| API-тесты | 10 тестов, из них не меньше 4 негативных; проверка структуры ответа; проверка доступа к чужим данным, если в проекте есть пользователи | 06–07 |
| UI-тесты | 3 сценария через страницу-объект; вход через API, кроме теста самой формы входа | 08–09 |
| Запуск | Одна команда из README; приложение для тестов поднимается само или описано, как поднять | 04, 10 |
| Отчёт | JUnit XML или HTML; снимки и трассы упавших UI-тестов | 09–10 |
| CI | Файл конвейера; зелёный прогон или объяснение, почему стенд недоступен, и прогон задания в контейнере | 10 |
| Стратегия | Полстраницы в README: что автоматизировано и на каком уровне, что оставлено вручную и почему | 01, 11 |
Найденные дефекты — отдельная ценность: каждый оформляется баг-репортом (в трекере проекта или файлом), а тест на него помечается xfail(strict=True) с номером.
| Пара | Что сделать к концу пары |
|---|---|
| 1 | Стратегия в README; проект собран по структуре раздела 03 (tests/unit, tests/api, tests/ui), фикстуры запуска и входа; модульные тесты; API-тесты — позитивные |
| 2 | API — негативные, схема ответа, доступ; страницы-объекты и UI-сценарии; все тесты проходят по одному и вместе |
| 3 | Отчёт, снимки и трассы, файл CI и его прогон; README по шаблону; ревью своего набора по чек-листу раздела 11; защита |
Проверка перед сдачей — запустить набор с нуля так, как это сделает преподаватель: новая папка, git clone, установка по README, одна команда. Если для этого нужно что-то, чего нет в README, — README неполон.
# Автотесты проекта «…»
## Что проверяется
Стратегия: модульные — …; API — …; UI — …
Вручную (не автоматизировано): … — потому что …
## Установка
py -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
playwright install chromium
## Запуск
pytest весь набор
pytest -m smoke быстрая проверка
## Отчёты
report.xml — JUnit; report.html — для чтения;
test-results/ — снимки и трассы упавших UI-тестов
## Известные дефекты
BUG-1 … — тест tests/api/test_….py::test_… (xfail)
На портал — ссылка на репозиторий (GitFlic или другой, открытый для преподавателя) и HTML-отчёт последнего прогона. Если репозиторий закрыт — архив проекта без папок .venv, test-results, htmlcov.
Защита — 10 минут: прогон набора у вас на компьютере, ответы на вопросы по своему коду. Типичные вопросы:
xfail пора снимать?Тест, ожидание которого студент не может объяснить, не засчитывается — даже если он зелёный.