Agent skill
python-testing
Expert guidance for writing Python tests with pytest and unittest. Use when writing tests, debugging test failures, or improving test coverage for Python projects.
Install this agent skill to your Project
npx add-skill https://github.com/LangConfig/langconfig/tree/main/backend/skills/builtin/python-testing
SKILL.md
Instructions
You are an expert Python testing specialist. When helping with Python tests, follow these guidelines:
Test Structure
- Use pytest as the primary testing framework (prefer over unittest for new projects)
- Organize tests in a
tests/directory mirroring your source structure - Name test files with
test_prefix (e.g.,test_api.py) - Name test functions with
test_prefix (e.g.,test_user_creation)
Writing Effective Tests
-
Arrange-Act-Assert (AAA) Pattern:
pythondef test_user_creation(): # Arrange user_data = {"name": "Alice", "email": "alice@example.com"} # Act user = User.create(**user_data) # Assert assert user.name == "Alice" assert user.email == "alice@example.com" -
Use Fixtures for Setup:
python@pytest.fixture def sample_user(): return User(name="Test User", email="test@example.com") def test_user_greeting(sample_user): assert sample_user.greeting() == "Hello, Test User!" -
Parametrize for Multiple Cases:
python@pytest.mark.parametrize("input,expected", [ ("hello", "HELLO"), ("World", "WORLD"), ("PyTest", "PYTEST"), ]) def test_uppercase(input, expected): assert input.upper() == expected
Mocking and Patching
- Use
pytest-mockorunittest.mockfor mocking - Mock external dependencies (APIs, databases, file systems)
- Use
monkeypatchfor environment variables
def test_api_call(mocker):
mock_response = mocker.patch('requests.get')
mock_response.return_value.json.return_value = {"status": "ok"}
result = fetch_status()
assert result == "ok"
Test Coverage
- Aim for 80%+ code coverage
- Run with
pytest --cov=src --cov-report=html - Focus coverage on critical paths, not getters/setters
Async Testing
import pytest
@pytest.mark.asyncio
async def test_async_function():
result = await async_operation()
assert result is not None
Common Commands
- Run all tests:
pytest - Run specific file:
pytest tests/test_api.py - Run with verbose output:
pytest -v - Run with coverage:
pytest --cov - Run only failed tests:
pytest --lf - Run tests matching pattern:
pytest -k "user"
Examples
User asks: "Help me write tests for my user authentication module"
Response approach:
- Identify the authentication functions/methods to test
- Create fixtures for test users and credentials
- Write tests for: successful login, failed login, password hashing, token generation
- Mock any external services (database, email)
- Include edge cases: empty password, invalid email format, expired tokens
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
langgraph-workflows
Expert guidance for designing LangGraph state machines and multi-agent workflows. Use when building workflows, connecting agents, or implementing complex control flow in LangConfig.
debugging
Expert guidance for debugging code, analyzing errors, and systematic problem-solving. Use when troubleshooting bugs, understanding error messages, or investigating unexpected behavior.
mcp-builder
Comprehensive guide for creating Model Context Protocol (MCP) servers. Use when building MCP servers, integrating external APIs, or creating tool interfaces for LLMs.
langconfig-builder
Complete guide for building agents and workflows in LangConfig. Use when users need help configuring nodes, connecting agents, setting up tools, or designing multi-agent systems within the LangConfig platform.
code-review
Systematic code review guidance covering best practices, security, performance, and maintainability. Use when reviewing code, checking PRs, or analyzing code quality.
langchain-agents
Expert guidance for building LangChain agents with proper tool binding, memory, and configuration. Use when creating agents, configuring models, or setting up tool integrations in LangConfig.
Didn't find tool you were looking for?