Skip to content
Back to skills

Test Generator

ASecurity

"Генерация pytest-скелетов из Python-модуля по AST с ghostwriter-эвристикой значений аргументов (bool→True/False, int→0/-1/1, str→sample/пустая, list/dict→пустые, Optional→None). Скрипт test_gen.py парсит функции/async-функции через ast, пропускает приватные (_), генерирует @pytest.mark.parametrize с assert-заглушками. Включает референс по генерации тестов на TypeScript (ts-morph, *.test.ts) и Go (table-driven). Триггеры: 'generate tests', 'сгенерируй тесты', 'test skeleton', 'pytest скелет',...

  • 6 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 3, 2026
ai-agentstypescriptpythongobash

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 20, 2026

npx -y skills add bestdeejay-design/agent-skills --skill test-generator --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Test Generator?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Test Generator
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bestdeejay-design-test-generator/badge)](https://www.skillsdirectory.com/skills/bestdeejay-design-test-generator)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: test-generator
description: "Генерация pytest-скелетов из Python-модуля по AST с ghostwriter-эвристикой значений аргументов (bool→True/False, int→0/-1/1, str→sample/пустая, list/dict→пустые, Optional→None). Скрипт test_gen.py парсит функции/async-функции через ast, пропускает приватные (_), генерирует @pytest.mark.parametrize с assert-заглушками. Включает референс по генерации тестов на TypeScript (ts-morph, *.test.ts) и Go (table-driven). Триггеры: 'generate tests', 'сгенерируй тесты', 'test skeleton', 'pytest скелет', 'покрытие тестами', 'unit tests для функций', 'тесты на функции', 'создать тесты'.",
license: MIT
metadata:
  author: best
  version: 1.0.0
compatibility: "Requires Python 3 stdlib (ast, argparse); optional pytest to run generated tests"
when_to_use: "Use when you need starter pytest/unit tests from existing functions. Triggers: 'generate tests', 'сгенерируй тесты', 'test skeleton', 'pytest скелет', 'покрытие тестами', 'создать тесты'. Examples: 'Generate pytest skeletons for module.py' / 'Сгенерируй тесты для функций'."
---

# Test Generator

> Генерация pytest-скелетов из сигнатур функций: AST-парсинг + эвристика значений,
> готовый параметризованный тест-файл в stdout или файл.

Загружай этот скилл когда нужно **создать стартовый pytest-набор** для
существующих функций или модуля. Скилл читает исходник, извлекает сигнатуры
и генерирует `@pytest.mark.parametrize`-скелеты с разумными тестовыми значениями —
остаётся лишь дописать assert-ожидания.

## 🎯 When to use

Use this skill when:
- Нужны тесты для нового модуля, где покрытие начинается с пустого файла
- Просят «сгенерируй тесты», «test skeleton», «покрой функциям»
- Нужна быстрая заготовка parametrize-кейсов с типичными значениями
- Хочешь перейти к TDD: сгенерируй красные скелеты и реализуй

Do NOT use when:
- Нужны осмысленные ассерты под конкретную логику — скрипт даёт заглушки, логику пишешь сам
- Тесты уже покрывают функции — файл-генератор всё перезапишет
- Нужны моки/фикстуры вне модуля — это уровень pytest напрямую

## 📦 Files

- `SKILL.md` — этот файл
- `scripts/test_gen.py` — генератор из AST (Python 3 stdlib)
- `references/` — примеры и референс TS/Go (в будущих версиях)

## 🧰 Usage

```bash
# В stdout:
python3 skills/test-generator/scripts/test_gen.py --file path/to/module.py

# В файл (рядом с модулем):
python3 skills/test-generator/scripts/test_gen.py \
    --file path/to/module.py --out tests/test_module.py
```

## ⚙️ Эвристика значений аргументов

| Аннотация | Значения |
|-----------|----------|
| `bool` | `True`, `False` |
| `int` | `0`, `-1`, `1` |
| `float` | `0.0`, `-1.5` |
| `str` / `text` | `"sample"`, `""` |
| `list[...]` | `[]` |
| `tuple[...]` | `()` |
| `dict[...]` | `{}` |
| `Optional[...]` | `None` |
| иное | значение не подставляется → `None`-заглушка |

Правила:
- Функции, начинающиеся с `_`, пропускаются.
- `async def` оборачивается в `asyncio.run(...)`.
- В генерируемом коде assert-заглушка: `assert result is not None` — допиши реальные ожидания.

## ✅ Definition of Done
- Скрипт отработал: валидный pytest-файл в stdout или `--out`.
- Сгенерированный код проходит `python3 -c "import ast"` (синтаксис корректный).
- Значения аргументов соответствуют эвристикам (таблица выше).

## Boundaries

- Do not treat generated tests as proof of correctness; review assertions and run the real suite.

Files in this skill

  • SKILL.md4.5 KB
  • scripts/test_gen.py4.5 KB
  • skill.json1.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.