Back to skills
SkillHub ClubShip Full StackTesting

testing-basics

Provides fundamental testing patterns and best practices applicable across programming languages. Covers test structure (AAA), types, naming conventions, isolation principles, and mocking guidelines. Includes concrete examples in Python and a practical checklist for developers.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
5
Hot score
82
Updated
March 20, 2026
Overall rating
A7.7
Composite score
4.9
Best-practice grade
S96.0

Install command

npx @skill-hub/cli install timequity-plugins-testing-basics
unit-testingtest-patternstesting-guidelinescode-quality

Repository

timequity/plugins

Skill path: craft-coder/testing-basics

Provides fundamental testing patterns and best practices applicable across programming languages. Covers test structure (AAA), types, naming conventions, isolation principles, and mocking guidelines. Includes concrete examples in Python and a practical checklist for developers.

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Testing.

Target audience: Junior to mid-level developers learning testing fundamentals or teams establishing testing standards.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: timequity.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install testing-basics into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/timequity/plugins before adding testing-basics to shared team environments
  • Use testing-basics for testing workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: testing-basics
description: |
  Essential testing patterns for any project.
  Use when: writing tests, setting up testing, or fixing test issues.
  Triggers: "test", "testing", "unit test", "write tests".
---

# Testing Basics

Core testing patterns that apply to any language or framework.

## Test Structure

### AAA Pattern
```
Arrange → Act → Assert
```

```python
# Arrange
user = User(name="Alice")

# Act
result = user.greet()

# Assert
assert result == "Hello, Alice!"
```

## Test Types

| Type | Scope | Speed | When to use |
|------|-------|-------|-------------|
| Unit | Single function/class | Fast | Core logic |
| Integration | Multiple components | Medium | APIs, DB |
| E2E | Full system | Slow | Critical paths |

## Naming Tests

```
test_[what]_[condition]_[expected]
```

Examples:
- `test_login_valid_credentials_returns_token`
- `test_checkout_empty_cart_raises_error`
- `test_search_no_results_returns_empty_list`

## What to Test

### Do Test
- Business logic
- Edge cases
- Error handling
- Public interfaces

### Don't Test
- Framework code
- Simple getters/setters
- Implementation details
- External services directly

## Test Isolation

Each test should:
- Run independently
- Not depend on order
- Clean up after itself
- Not share state

## Mocking

Mock external dependencies, not internal logic:

```python
# Good: mock external service
@patch('app.services.email.send')
def test_signup_sends_welcome_email(mock_send):
    signup(user)
    mock_send.assert_called_once()

# Bad: mock internal implementation
@patch('app.models.user.User._validate')  # Don't do this
```

## Coverage

- Aim for meaningful coverage, not 100%
- Cover happy paths first
- Then error cases
- Then edge cases

## Quick Checklist

Before committing:
- [ ] Tests pass locally
- [ ] New code has tests
- [ ] No flaky tests added
- [ ] Test names are descriptive