Установка pytest и запуск тестов
Установка pytest
В
процессе обучения мы будем присылать вам программные тесты, чтобы вы
могли проверить работу своего кода. Такими тестами будет управлять пакет
Pytest. Это инструмент для написания и запуска автоматических тестов, написанных на Python.
Этот пакет вы будете устанавливать в виртуальное окружение каждого проекта, который будете сдавать на проверку.
Пока
срок сдачи домашней работы не горит — самое время потренироваться:
установить Pytest в виртуальное окружение и запустить тесты.
Откройте проект
backend_test_homework
в терминале, активируйте виртуальное окружение и введите команду:Скопировать кодBASH(venv)...Dev/backend_test_homework$ pip install pytest
По этой команде запустится менеджер пакетов pip, он найдёт, скачает и установит программу
pytest
на компьютер, в виртуальное окружение проекта. Служебные файлы Pytest будут сохранены в директории Dev/backend_test_homework.Проверка установки
После завершения процесса проверьте, что Pytest действительно установился: запросите версию установленного пакета:
Скопировать кодBASH(venv)...Dev/backend_test_homework$ pytest --version
В терминале вы увидите, какая версия установлена:
Скопировать кодThis is pytest version ..., imported from ... (и дальше всякие полезные нерусские слова)
Можно
проверить, установлен ли пакет Pytest в виртуальное окружение проекта
или в вашу операционную систему (это могло случиться, если вы
устанавливали Pytest при неактивированном виртуальном окружении).
Отключите виртуальное окружение командой
(venv)...$ deactivate
и запустите тесты. Скопировать код...Dev/backend_test_homework$ pytest
Если вы установили пакет Pytest правильно, именно в виртуальное окружение
Dev/backend_test_homework/venv
, то при неактивированном виртуальном окружении тесты не запустятся, и вы увидите сообщение, что модуль Pytest не найден. Всё верно, так и должно быть.
Запуск тестов
Активируйте окружение, запустите Pytest из командной строки, из директории /backend_test_homework (в ней должен находится файл pytest.ini).
Скопировать код(venv)...Dev/backend_test_homework$ pytest
Команда найдёт файл с тестами (они сохранены в
test_program.py
) и запустит все тесты из этого файла. Тесты написаны специально для задания backend_test_homework, они проверят наличие файла program.py
и код в нём. В результате работы Pytest выведет в консоль примерно такой текст:
Скопировать код======================================== test session starts ========================================= <разная информация о местоположении файла и т. д. > collected 0 items / 1 error =============================================== ERRORS =============================================== __________________________________ ERROR collecting test_program.py __________________________________ test_program.py:12: in <module> import program E File "...../Dev/backend_test_homework/program.py", line 1 E print('Я домашка' E ^ E SyntaxError: unexpected EOF while parsing During handling of the above exception, another exception occurred: test_program.py:14: in <module> assert False, 'Не удалось запустить `program.py`. Исправьте в нём ошибки.' E AssertionError: Не удалось запустить `program.py`. Исправьте в нём ошибки. E assert False ====================================== short test summary info ======================================= ERROR test_program.py - AssertionError: Не удалось запустить `program.py`. Исправьте в нём ошибки. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ========================================== 1 error in 0.14s ==========================================
Pytest нашёл ошибку!
Проблема в строке номер 1 файла
Dev/backend_test_homework/program.py
. Да, всё правильно: это была проверка, мы преднамеренно допустили ошибку в этом файле. Исправьте её и запустите тесты заново.
Когда задание будет выполнено верно, все тесты должны быть «зелёными» (PASSED).
Тесты по-русски
Если
вы работаете на Windows через Git Bash — вас может подстерегать
неприятная неожиданность: в отчётах об ошибках не будет читаться
кириллица.
По умолчанию этот терминал работает только с символами в кодировке ASCII (только латиница и цифры).
Кодировку в терминале можно перенастроить: правый клик по шапке терминала → Пункт «Настройки»
В левой колонке выберите пункт «Текст», и в окнах
«Формат» и «Набор символов» установите настройки, как на скриншоте. В
англоязычном интерфейсе эти окна будут называться “Locale” и “Character
Set”.
Но удобнее всего будет работать через встроенный
терминал в Visual Studio Code. Там не будет никаких проблем с
кодировкой, да и работать с кодом и терминалом в одном рабочем
пространстве будет гораздо удобнее.