Test_generator_real
Test Case Generator (tcg)
Test Case Generator — инструмент для автоматической генерации тестовых случаев для типовых задач по программированию (sorting, searching, data structures). Он генерирует random и edge cases, вычисляет ожидаемые ответы (oracle) и экспортирует всё в JSON для использования в тестовых фреймворках.
Возможности
- Шаблоны задач:
: сортировка массива целых чисел.sorting: линейный поиск элемента в массиве.searching: симуляция стека по операциямds_stack.push/pop
- Генерация данных:
- Random cases (управляемые параметры: размер, диапазон значений, seed).
- Edge cases (пустые массивы, дубликаты, очень большие числа, pop из пустого стека).
- Генерация ожидаемых выходов:
→sorting.sorted(arr)→ индекс первого вхождения илиsearching.-1→ список результатовds_stackи финальный стек.pop
- Экспорт:
- JSON с метаданными и массивом кейсов, где у каждого кейса есть
иinput.expected
- JSON с метаданными и массивом кейсов, где у каждого кейса есть
Установка
Вариант A: установка зависимостей
Из корня репозитория:
Вариант B: виртуальное окружение (рекомендуется)
Быстрый старт (примеры)
В проекте код находится в папке , поэтому команды ниже выполняются из .
Генерация: sorting
Проверить, что файл создался:
Генерация: searching
Генерация: stack (data structures)
Формат JSON
Каждый сгенерированный файл имеет структуру:
: тип шаблона (task_type/sorting/searching).data_structures_stack: версия генератора.generator_version: параметры генерации.meta: массив тестов, каждый тест содержит:cases- id
(например,tags,edge)random(входные данные)input(ожидаемый ответ)expected
Проверки качества кода
Black
Форматирование (применить изменения):
Проверка (как в CI):
Flake8
Запуск линтера:
Если проект использует Black, обычно настраивают flake8 так, чтобы не конфликтовать с форматированием (например, игнорировать или увеличить ).
Pytest
Если в корне репозитория есть с , то можно запускать из корня:
Иначе можно запускать с явным :
CI/CD (workflow_dispatch + artifacts)
В репозитории настроен workflow, который запускается вручную через событие (кнопка Run workflow в интерфейсе).
Workflow:
- запускает формат-проверку и линтер;
- прогоняет unit-тесты;
- генерирует JSON с тестами;
- сохраняет результаты как artifact, который можно скачать после выполнения workflow.
Структура проекта
.
├── requirements.txt
├── README.md
├── pyproject.toml # конфигурация black/flake8 (если используется)
├── pytest.ini # настройка pytest для src-layout (если используется)
├── src/
│ ├── tcg/
│ │ ├── cli.py # CLI: генерация тестов и экспорт в JSON
│ │ ├── export.py # экспорт TestSuite в JSON
│ │ ├── models.py # модели TestSuite/TestCase
│ │ ├── utils.py # утилиты
│ │ ├── generators/ # генераторы входных данных
│ │ └── oracles/ # вычисление expected (oracle)
│ ├── tests/ # unit-тесты (pytest)
│ └── artifacts/ # результаты генерации (обычно не коммитятся)
└── .github/ or .gitverse/
└── workflows/ # CI/CD workflow