Generate test scaffolds from Code2Logic output files
Project description
Logic2Test - Test Generation from Logic Files
Generate test scaffolds from Code2Logic output files.
Reads YAML, Hybrid YAML, or TOON format files and produces pytest-compatible test suites.
✨ Features
- 🧪 Unit tests - Test scaffolds for classes and functions
- 🔗 Integration tests - Cross-module interaction tests
- 📊 Property tests - Hypothesis-based property testing
- 🎯 Smart mocking - Auto-generated mocks based on type hints
- 📝 Pytest style - Ready-to-run pytest test files
🚀 Installation
pip install logic2test
Or with optional dependencies:
pip install logic2test[hypothesis] # Property testing support
📖 Quick Start
CLI
# Show what can be generated
logic2test project.c2l.yaml --summary
# Generate unit tests
logic2test project.c2l.yaml -o tests/
# Generate all test types
logic2test project.c2l.yaml -o tests/ --type all
# Include private methods
logic2test project.c2l.yaml -o tests/ --include-private
Python API
from logic2test import TestGenerator
# Create generator
generator = TestGenerator('project.c2l.yaml')
# Get summary
summary = generator.summary()
print(f"Classes: {summary['testable_classes']}")
print(f"Functions: {summary['testable_functions']}")
# Generate unit tests
result = generator.generate_unit_tests('tests/')
print(f"Generated {result.tests_generated} tests")
# Generate all test types
result = generator.generate_all('tests/')
📋 Generated Test Structure
tests/
├── unit/
│ ├── test_analyzer.py
│ ├── test_parsers.py
│ └── test_generators.py
├── integration/
│ └── test_integration.py
└── property/
└── test_properties.py
Example Generated Test
def test_analyze_project():
"""Test analyze_project function."""
# Arrange
path = "/tmp/test_path"
use_treesitter = Mock()
verbose = False
# Act
# result = analyze_project(path, use_treesitter, verbose)
# Assert
assert result is not None # TODO: Add specific assertion
🖥️ CLI Reference
| Option | Description |
|---|---|
-o, --output DIR |
Output directory for tests |
-t, --type TYPE |
Test type: unit, integration, property, all |
--framework FW |
Test framework: pytest, unittest |
--include-private |
Include private methods |
--include-dunder |
Include dunder methods |
--summary |
Show summary without generating |
-v, --verbose |
Verbose output |
⚙️ Configuration
from logic2test import TestGenerator, GeneratorConfig
config = GeneratorConfig(
framework='pytest',
include_private=False,
include_dunder=False,
max_tests_per_file=50,
output_prefix='test_',
generate_class_tests=True,
generate_function_tests=True,
generate_dataclass_tests=True,
)
generator = TestGenerator('project.c2l.yaml', config)
📥 Supported Input Formats
| Format | Extension | Description |
|---|---|---|
| YAML | .yaml |
Standard Code2Logic output |
| Hybrid | .hybrid.yaml |
Compact YAML with metadata |
| TOON | .toon |
Token-Oriented Object Notation |
🧪 Development
# Install dev dependencies
make install-dev
# Run tests
make test
# Format code
make format
# Lint
make lint
# Build package
make build
# Publish to PyPI
make publish
📄 License
Apache 2.0 License - see LICENSE for details.
🔗 Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
logic2test-0.1.0.tar.gz
(3.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file logic2test-0.1.0.tar.gz.
File metadata
- Download URL: logic2test-0.1.0.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0291a9a1528bb989af7c3067ae37c48c61f43d03acaaa2e230a06e32685457c
|
|
| MD5 |
999571fcfaeaf1f4fb81f211f0b1484e
|
|
| BLAKE2b-256 |
2a4a1afb8226e7f87797a95fd41a825b4bc87fedccca7874ecf2c2bf485477a8
|
File details
Details for the file logic2test-0.1.0-py3-none-any.whl.
File metadata
- Download URL: logic2test-0.1.0-py3-none-any.whl
- Upload date:
- Size: 3.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21affc6c77e537f263ba3dafdf4f95118427310edef377df9fbb95e23f6337ea
|
|
| MD5 |
faa281211eb1fc0e662a76ba3a57729b
|
|
| BLAKE2b-256 |
a04caef0f98af35aa5c7ea09744be2c8bb59046d77a2459fc4eedb313853ddc4
|