agentsclimarketplace

Python testing

Skill aps08/fullstack-clean-architecture/.agents/skills/python_testing

Read to code, just run Docker compose.

Install
npx -y skills add aps08/fullstack-clean-architecture --skill python_testing

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Guidelines for Python testing using pytest and pytest-asyncio. Use when writing or debugging backend tests.

SKILL.md

3.1 KB, as published. Nobody here has run it

Python Testing Skill

Testing Framework & Configuration

  • Use pytest combined with pytest-asyncio for all testing.
  • Auto Mode: The project is configured with asyncio_mode = "auto" in server/pyproject.toml. Because of this, any test function declared with async def is automatically run inside an asyncio event loop.
  • No Decorators Needed: Do not use the @pytest.mark.anyio or @pytest.mark.asyncio decorators on async test functions, as asyncio_mode = "auto" handles this automatically.

Directory Structure

All test files are located under server/tests/ and are organized as follows:

  • tests/unit/: Contains unit tests testing components in isolation. Subdirectories match the application structure (e.g., core, repositories, service, utils).
  • tests/integrations/: Contains end-to-end integration tests that call API endpoints using a test client.
  • tests/mocks/: Contains mock classes for repositories and external integrations (e.g. MockTodoRepository).
  • tests/factories.py: Contains factory methods (like create_user, create_todo) to generate mock data.
  • tests/conftest.py: Contains common fixtures and configuration for all tests.

Conventions & Best Practices

  • Docstrings: Every test function MUST have a descriptive docstring explaining exactly what it verifies.
  • Mocking: Mock external dependencies (like database repositories or third-party HTTP clients) when writing unit tests for services. Use the classes in tests/mocks/.
  • Fixture Scopes: Ensure all fixtures are explicitly scoped (e.g. scope="session").
  • Code Coverage: Ensure test coverage is strictly more than 80%.
  • Async loops: Use the default loop scopes defined in pyproject.toml (asyncio_default_fixture_loop_scope = "session" and asyncio_default_test_loop_scope = "session").
  • No need to add comments inside any of the test code. Docstrings are enough.

Example: Unit Test

async def test_add_todo_without_attachments(
    todo_service: TodoService,
    mock_todo_repository: MockTodoRepository,
) -> None:
    """Test that creating a Todo task without specifying attachment IDs persists the Todo correctly."""
    todo_data = TodoCreate(
        title="Buy groceries",
        description="Milk and bread",
        is_completed=False,
        attachment_ids=None,
    )
    todo = await todo_service.add(todo_data)
    assert len(mock_todo_repository.todos_db) == 1
    assert mock_todo_repository.todos_db[0].title == "Buy groceries"
    assert mock_todo_repository.todos_db[0].id == todo.id

Example: Integration Test

async def test_get_todos_list_success(client: Any) -> None:
    """Integration test verifying that an authenticated user can list their seeded Todo items successfully."""
    api_client = await client("[email protected]", "SecurePass123!")
    response = await api_client.get("/v2/todos/")
    assert response.status_code == 200
    data = response.json()
    assert "founds" in data

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.