Условия лабораторных работ вы можете найти в таблице курса.
Порядок запуска локального тестирования:
-
Склонировать этот репозиторий
-
Инициализировать виртуальную среду Python
-
Скомпилировать разработанную программу
-
Проверить, что создался исполняемый файл (в Windows по умолчанию это
a.exe, в Linux -a.out) -
В каталоге, в котором находится этот файл, выполнить команду:
python <путь к main.py> --program <путь к исполняемому файлу> --suite <набор тестов>
-
Для ускорения отладки рекомендуется создать скрипт, выполняющий шаги 3-5.
-
Для обновления тестов, находясь в директории репозитория, выполнить команду:
git pull
Ниже представлена таблица доступных для тестирования (как локально, так и автоматически в репозиториях) лабораторных работ с названием набора тестов для тестера (suite).
| № | Лабораторная работа | Набор тестов |
|---|---|---|
| 0 | Сумма чисел | sum |
| 1 | Матричный калькулятор | math |
Note
Вы можете запустить команду python main.py --help для получения справочной информации.
Тестер выполняет тестирование программы методом "чёрного ящика", то есть на вход input программа выдаёт какой-то выход output, который должен быть правильным с точки зрения текущего теста. Необходимыми и достаточными параметрами main.py являются:
--program <path/to/executable>- путь к исполняемому файлу;--suite <name>- выбор задания (набор тестов).
Поскольку отсутствие оптимизации при сборке (например, с ключом -O0 -g для дебага программы) и санитайзеры могут замедлить вашу программу, то имеет смысл установить множитель максимального времени исполнения процесса на все тесты:
--timeout-factor <float>- множитель максимального времени исполнения порождённого процесса программы (по умолчанию -1.0).
Для генерации полного отчёта (общая информация и информация по каждому тесту) в формате JSON:
--json-output-name <filename>- генерация JSON отчёта с заданным названием файла (по умолчанию нет генерации).
Для тестирования рекомендуется создать виртуальную среду venv и тестироваться через неё. Таким образом, можно поднять уровень изоляции от всей системы и избежать установки конфликтующих библиотек:
-
создание новой среды:
python -m venv venv # или: python3 -m venv venv -
активация текущей командной строки как
venv:source ./venv/bin/activate # на Linux/MacOS (Bash)
.\venv\Scripts\Activate.ps1 # на Windows (Powershell).\venv\Scripts\activate.bat REM на Windows (CMD) -
установка всех необходимых для тестирования библиотек:
pip install -r requirements.txt