Test_generator_real

0
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
3 месяца назад
README.md

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
      .

Установка

Вариант A: установка зависимостей

Из корня репозитория:

Вариант B: виртуальное окружение (рекомендуется)

Быстрый старт (примеры)

В проекте код находится в папке

src/
, поэтому команды ниже выполняются из
src
.

Генерация: 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 так, чтобы не конфликтовать с форматированием (например, игнорировать

E501
или увеличить
max-line-length
).

Pytest

Если в корне репозитория есть

pytest.ini
с
pythonpath = src
, то можно запускать из корня:

Иначе можно запускать с явным

PYTHONPATH
:

CI/CD (workflow_dispatch + artifacts)

В репозитории настроен workflow, который запускается вручную через событие

workflow_dispatch
(кнопка 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