Initial commit
This commit is contained in:
57
skills/python-test-strategy/reference/public-api.md
Normal file
57
skills/python-test-strategy/reference/public-api.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# Public API Testing
|
||||
|
||||
## API Module
|
||||
|
||||
Create `api.py` that exports all public interfaces (one import per line):
|
||||
|
||||
```python
|
||||
# project/api.py
|
||||
from .math.operations import add_numbers
|
||||
from .math.operations import subtract_numbers
|
||||
from .utils.helpers import format_output
|
||||
from .core.engine import create_engine
|
||||
```
|
||||
|
||||
One import per line makes changes clear in diffs and easier to maintain.
|
||||
|
||||
## Test Public API
|
||||
|
||||
Test file at `tests/test_api.py` verifies all exports are accessible:
|
||||
|
||||
```python
|
||||
from project import api
|
||||
|
||||
def test_api():
|
||||
"""Verify all public APIs are importable."""
|
||||
_ = api.add_numbers
|
||||
_ = api.subtract_numbers
|
||||
_ = api.format_output
|
||||
_ = api.create_engine
|
||||
```
|
||||
|
||||
## Purpose
|
||||
|
||||
- Catch accidental removal of public exports
|
||||
- Prevent breaking changes to API
|
||||
- Document what users can import
|
||||
- Fail tests if API changes unexpectedly
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Export only stable APIs** - Functions and classes that are unlikely to change
|
||||
2. **Keep minimal** - Don't export internal utilities
|
||||
3. **Document** - Add docstring to `api.py` explaining what's exported
|
||||
4. **Group logically** - Organize imports by functional area
|
||||
|
||||
## Deprecation
|
||||
|
||||
Mark deprecated APIs before removal:
|
||||
|
||||
```python
|
||||
import warnings
|
||||
|
||||
def old_function():
|
||||
"""Deprecated: Use new_function() instead."""
|
||||
warnings.warn("Use new_function instead", DeprecationWarning, stacklevel=2)
|
||||
return new_function()
|
||||
```
|
||||
Reference in New Issue
Block a user