Agent skill

Python Testing

by affaan-m in affaan-m/ECC

pytest, TDD metodolojisi, fixture'lar, mocking, parametrizasyon ve coverage gereksinimleri kullanarak Python test stratejileri.

MITAuto-check passedTesting & QA

Install Python Testing

skills CLI
$ npx skills add affaan-m/ECC --skill python-testing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install affaan-m/ECC python-testing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/affaan-m/ECC.git skills-src && mkdir -p .claude/skills && cp -r skills-src/docs/tr/skills/python-testing .claude/skills/python-testing && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
python-testing
GitHub stars
274k
Used in
1 other repo
Token cost
~4.9k tokens
SKILL.md length
431 words
Files
1
Skills in repo
657
Repo updated
First seen
Licence
MIT

At a glance

pytest, TDD metodolojisi, fixture'lar, mocking, parametrizasyon ve coverage gereksinimleri kullanarak Python test stratejileri.

  • Works in 3 steps: RED: İstenen davranış için başarısız bir… → GREEN: Testi geçirmek için minimal kod yaz → REFACTOR: Testleri yeşil tutarken kodu…
  • Tasks that involve Unit testing
  • SKILL.md covers Ne Zaman Etkinleştirmeli, Temel Test Felsefesi, pytest Temelleri and Fixture'lar, plus 3 more sections
  • Calls pytest

What it does

Python Testing is an agent skill from affaan-m/ECC. pytest, TDD metodolojisi, fixture'lar, mocking, parametrizasyon ve coverage gereksinimleri kullanarak Python test stratejileri.

Its SKILL.md is about 4.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Unit testing and Test-driven development. It works with Python and pytest. The repository describes itself as: The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond. The licence is MIT.

When your agent uses it

  • Tasks that involve Unit testing
  • Tasks that involve Test-driven development

Example prompts

  • “/python-testing”

Requirements

  • Python 3

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. RED: İstenen davranış için başarısız bir test yaz
  2. GREEN: Testi geçirmek için minimal kod yaz
  3. REFACTOR: Testleri yeşil tutarken kodu iyileştir

What it can do on your machine

Read from SKILL.md and the folder at commit ef648e0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pytest

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Python Testing loads about 4.9k tokens when it runs. Until then it costs about 36 tokens; SKILL.md has 431 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~36
When it runs · the whole SKILL.md, loaded when a task matches
~4.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from affaan-m/ECC at commit ef648e0, republished under its MIT licence (© affaan-m). 431 words, ~4,872 tokens.

Download SKILL.mdSave it as .claude/skills/python-testing/SKILL.md (or your agent's skills folder).
name
python-testing
description
pytest, TDD metodolojisi, fixture'lar, mocking, parametrizasyon ve coverage gereksinimleri kullanarak Python test stratejileri.
origin
ECC

Python Test Desenleri

pytest, TDD metodolojisi ve en iyi uygulamalar kullanarak Python uygulamaları için kapsamlı test stratejileri.

Ne Zaman Etkinleştirmeli

  • Yeni Python kodu yazarken (TDD'yi takip et: red, green, refactor)
  • Python projeleri için test suite'leri tasarlarken
  • Python test coverage'ını gözden geçirirken
  • Test altyapısını kurarken

Temel Test Felsefesi

Test-Driven Development (TDD)

Her zaman TDD döngüsünü takip edin:

  1. RED: İstenen davranış için başarısız bir test yaz
  2. GREEN: Testi geçirmek için minimal kod yaz
  3. REFACTOR: Testleri yeşil tutarken kodu iyileştir
python
# Adım 1: Başarısız test yaz (RED)
def test_add_numbers():
    result = add(2, 3)
    assert result == 5

# Adım 2: Minimal implementasyon yaz (GREEN)
def add(a, b):
    return a + b

# Adım 3: Gerekirse refactor et (REFACTOR)
Coverage Gereksinimleri
  • Hedef: 80%+ kod coverage'ı
  • Kritik yollar: 100% coverage gereklidir
  • Coverage'ı ölçmek için pytest --cov kullanın
bash
pytest --cov=mypackage --cov-report=term-missing --cov-report=html

pytest Temelleri

Temel Test Yapısı
python
import pytest

def test_addition():
    """Temel toplama testi."""
    assert 2 + 2 == 4

def test_string_uppercase():
    """String büyük harf yapma testi."""
    text = "hello"
    assert text.upper() == "HELLO"

def test_list_append():
    """Liste append testi."""
    items = [1, 2, 3]
    items.append(4)
    assert 4 in items
    assert len(items) == 4
Assertion'lar
python
# Eşitlik
assert result == expected

# Eşitsizlik
assert result != unexpected

# Doğruluk değeri
assert result  # Truthy
assert not result  # Falsy
assert result is True  # Tam olarak True
assert result is False  # Tam olarak False
assert result is None  # Tam olarak None

# Üyelik
assert item in collection
assert item not in collection

# Karşılaştırmalar
assert result > 0
assert 0 <= result <= 100

# Tip kontrolü
assert isinstance(result, str)

# Exception testi (tercih edilen yaklaşım)
with pytest.raises(ValueError):
    raise ValueError("error message")

# Exception mesajını kontrol et
with pytest.raises(ValueError, match="invalid input"):
    raise ValueError("invalid input provided")

# Exception niteliklerini kontrol et
with pytest.raises(ValueError) as exc_info:
    raise ValueError("error message")
assert str(exc_info.value) == "error message"

Fixture'lar

Temel Fixture Kullanımı
python
import pytest

@pytest.fixture
def sample_data():
    """Örnek veri sağlayan fixture."""
    return {"name": "Alice", "age": 30}

def test_sample_data(sample_data):
    """Fixture kullanan test."""
    assert sample_data["name"] == "Alice"
    assert sample_data["age"] == 30
Setup/Teardown ile Fixture
python
@pytest.fixture
def database():
    """Setup ve teardown ile fixture."""
    # Setup
    db = Database(":memory:")
    db.create_tables()
    db.insert_test_data()

    yield db  # Teste sağla

    # Teardown
    db.close()

def test_database_query(database):
    """Veritabanı operasyonlarını test et."""
    result = database.query("SELECT * FROM users")
    assert len(result) > 0
Fixture Scope'ları
python
# Function scope (varsayılan) - her test için çalışır
@pytest.fixture
def temp_file():
    with open("temp.txt", "w") as f:
        yield f
    os.remove("temp.txt")

# Module scope - modül başına bir kez çalışır
@pytest.fixture(scope="module")
def module_db():
    db = Database(":memory:")
    db.create_tables()
    yield db
    db.close()

# Session scope - test oturumu başına bir kez çalışır
@pytest.fixture(scope="session")
def shared_resource():
    resource = ExpensiveResource()
    yield resource
    resource.cleanup()
Parametreli Fixture
python
@pytest.fixture(params=[1, 2, 3])
def number(request):
    """Parametreli fixture."""
    return request.param

def test_numbers(number):
    """Test her parametre için 3 kez çalışır."""
    assert number > 0
Birden Fazla Fixture Kullanma
python
@pytest.fixture
def user():
    return User(id=1, name="Alice")

@pytest.fixture
def admin():
    return User(id=2, name="Admin", role="admin")

def test_user_admin_interaction(user, admin):
    """Birden fazla fixture kullanan test."""
    assert admin.can_manage(user)
Autouse Fixture'ları
python
@pytest.fixture(autouse=True)
def reset_config():
    """Her testten önce otomatik olarak çalışır."""
    Config.reset()
    yield
    Config.cleanup()

def test_without_fixture_call():
    # reset_config otomatik olarak çalışır
    assert Config.get_setting("debug") is False
Paylaşılan Fixture'lar için Conftest.py
python
# tests/conftest.py
import pytest

@pytest.fixture
def client():
    """Tüm testler için paylaşılan fixture."""
    app = create_app(testing=True)
    with app.test_client() as client:
        yield client

@pytest.fixture
def auth_headers(client):
    """API testi için auth header'ları oluştur."""
    response = client.post("/api/login", json={
        "username": "test",
        "password": "test"
    })
    token = response.json["token"]
    return {"Authorization": f"Bearer {token}"}

Parametrizasyon

Temel Parametrizasyon
python
@pytest.mark.parametrize("input,expected", [
    ("hello", "HELLO"),
    ("world", "WORLD"),
    ("PyThOn", "PYTHON"),
])
def test_uppercase(input, expected):
    """Test farklı input'larla 3 kez çalışır."""
    assert input.upper() == expected
Birden Fazla Parametre
python
@pytest.mark.parametrize("a,b,expected", [
    (2, 3, 5),
    (0, 0, 0),
    (-1, 1, 0),
    (100, 200, 300),
])
def test_add(a, b, expected):
    """Birden fazla input ile toplama testi."""
    assert add(a, b) == expected
ID'li Parametrizasyon
python
@pytest.mark.parametrize("input,expected", [
    ("valid@email.com", True),
    ("invalid", False),
    ("@no-domain.com", False),
], ids=["valid-email", "missing-at", "missing-domain"])
def test_email_validation(input, expected):
    """Okunabilir test ID'leri ile email validation testi."""
    assert is_valid_email(input) is expected
Parametreli Fixture'lar
python
@pytest.fixture(params=["sqlite", "postgresql", "mysql"])
def db(request):
    """Birden fazla veritabanı backend'ine karşı test."""
    if request.param == "sqlite":
        return Database(":memory:")
    elif request.param == "postgresql":
        return Database("postgresql://localhost/test")
    elif request.param == "mysql":
        return Database("mysql://localhost/test")

def test_database_operations(db):
    """Test her veritabanı için 3 kez çalışır."""
    result = db.query("SELECT 1")
    assert result is not None

Marker'lar ve Test Seçimi

Özel Marker'lar
python
# Yavaş testleri işaretle
@pytest.mark.slow
def test_slow_operation():
    time.sleep(5)

# Entegrasyon testlerini işaretle
@pytest.mark.integration
def test_api_integration():
    response = requests.get("https://api.example.com")
    assert response.status_code == 200

# Unit testleri işaretle
@pytest.mark.unit
def test_unit_logic():
    assert calculate(2, 3) == 5
Belirli Testleri Çalıştırma
bash
# Sadece hızlı testleri çalıştır
pytest -m "not slow"

# Sadece entegrasyon testlerini çalıştır
pytest -m integration

# Entegrasyon veya yavaş testleri çalıştır
pytest -m "integration or slow"

# Unit olarak işaretlenmiş ama yavaş olmayan testleri çalıştır
pytest -m "unit and not slow"
pytest.ini'de Marker'ları Yapılandırma
ini
[pytest]
markers =
    slow: marks tests as slow
    integration: marks tests as integration tests
    unit: marks tests as unit tests
    django: marks tests as requiring Django

Mocking ve Patching

Fonksiyonları Mocking
python
from unittest.mock import patch, Mock

@patch("mypackage.external_api_call")
def test_with_mock(api_call_mock):
    """Mock'lanmış harici API ile test."""
    api_call_mock.return_value = {"status": "success"}

    result = my_function()

    api_call_mock.assert_called_once()
    assert result["status"] == "success"
Dönüş Değerlerini Mocking
python
@patch("mypackage.Database.connect")
def test_database_connection(connect_mock):
    """Mock'lanmış veritabanı bağlantısı ile test."""
    connect_mock.return_value = MockConnection()

    db = Database()
    db.connect()

    connect_mock.assert_called_once_with("localhost")
Exception'ları Mocking
python
@patch("mypackage.api_call")
def test_api_error_handling(api_call_mock):
    """Mock'lanmış exception ile hata işleme testi."""
    api_call_mock.side_effect = ConnectionError("Network error")

    with pytest.raises(ConnectionError):
        api_call()

    api_call_mock.assert_called_once()
Context Manager'ları Mocking
python
@patch("builtins.open", new_callable=mock_open)
def test_file_reading(mock_file):
    """Mock'lanmış open ile dosya okuma testi."""
    mock_file.return_value.read.return_value = "file content"

    result = read_file("test.txt")

    mock_file.assert_called_once_with("test.txt", "r")
    assert result == "file content"
Autospec Kullanma
python
@patch("mypackage.DBConnection", autospec=True)
def test_autospec(db_mock):
    """API yanlış kullanımını yakalamak için autospec ile test."""
    db = db_mock.return_value
    db.query("SELECT * FROM users")

    # DBConnection query metodu yoksa bu başarısız olur
    db_mock.assert_called_once()
Mock Class Instance'ları
python
class TestUserService:
    @patch("mypackage.UserRepository")
    def test_create_user(self, repo_mock):
        """Mock'lanmış repository ile kullanıcı oluşturma testi."""
        repo_mock.return_value.save.return_value = User(id=1, name="Alice")

        service = UserService(repo_mock.return_value)
        user = service.create_user(name="Alice")

        assert user.name == "Alice"
        repo_mock.return_value.save.assert_called_once()
Mock Property
python
@pytest.fixture
def mock_config():
    """Property'li bir mock oluştur."""
    config = Mock()
    type(config).debug = PropertyMock(return_value=True)
    type(config).api_key = PropertyMock(return_value="test-key")
    return config

def test_with_mock_config(mock_config):
    """Mock'lanmış config property'leri ile test."""
    assert mock_config.debug is True
    assert mock_config.api_key == "test-key"

Asenkron Kodu Test Etme

pytest-asyncio ile Asenkron Testler
python
import pytest

@pytest.mark.asyncio
async def test_async_function():
    """Asenkron fonksiyon testi."""
    result = await async_add(2, 3)
    assert result == 5

@pytest.mark.asyncio
async def test_async_with_fixture(async_client):
    """Asenkron fixture ile asenkron test."""
    response = await async_client.get("/api/users")
    assert response.status_code == 200
Asenkron Fixture
python
@pytest.fixture
async def async_client():
    """Asenkron test client sağlayan asenkron fixture."""
    app = create_app()
    async with app.test_client() as client:
        yield client

@pytest.mark.asyncio
async def test_api_endpoint(async_client):
    """Asenkron fixture kullanan test."""
    response = await async_client.get("/api/data")
    assert response.status_code == 200
Asenkron Fonksiyonları Mocking
python
@pytest.mark.asyncio
@patch("mypackage.async_api_call")
async def test_async_mock(api_call_mock):
    """Mock ile asenkron fonksiyon testi."""
    api_call_mock.return_value = {"status": "ok"}

    result = await my_async_function()

    api_call_mock.assert_awaited_once()
    assert result["status"] == "ok"

Exception'ları Test Etme

Beklenen Exception'ları Test Etme
python
def test_divide_by_zero():
    """Sıfıra bölmenin ZeroDivisionError raise ettiğini test et."""
    with pytest.raises(ZeroDivisionError):
        divide(10, 0)

def test_custom_exception():
    """Mesaj ile özel exception testi."""
    with pytest.raises(ValueError, match="invalid input"):
        validate_input("invalid")
Exception Niteliklerini Test Etme
python
def test_exception_with_details():
    """Özel niteliklerle exception testi."""
    with pytest.raises(CustomError) as exc_info:
        raise CustomError("error", code=400)

    assert exc_info.value.code == 400
    assert "error" in str(exc_info.value)

Yan Etkileri Test Etme

Dosya Operasyonlarını Test Etme
python
import tempfile
import os

def test_file_processing():
    """Geçici dosya ile dosya işleme testi."""
    with tempfile.NamedTemporaryFile(mode='w', delete=False, suffix='.txt') as f:
        f.write("test content")
        temp_path = f.name

    try:
        result = process_file(temp_path)
        assert result == "processed: test content"
    finally:
        os.unlink(temp_path)
pytest'in tmp_path Fixture'ı ile Test Etme
python
def test_with_tmp_path(tmp_path):
    """pytest'in built-in geçici yol fixture'ını kullanarak test."""
    test_file = tmp_path / "test.txt"
    test_file.write_text("hello world")

    result = process_file(str(test_file))
    assert result == "hello world"
    # tmp_path otomatik olarak temizlenir
tmpdir Fixture ile Test Etme
python
def test_with_tmpdir(tmpdir):
    """pytest'in tmpdir fixture'ını kullanarak test."""
    test_file = tmpdir.join("test.txt")
    test_file.write("data")

    result = process_file(str(test_file))
    assert result == "data"

Test Organizasyonu

Dizin Yapısı
tests/
├── conftest.py                 # Paylaşılan fixture'lar
├── __init__.py
├── unit/                       # Unit testler
│   ├── __init__.py
│   ├── test_models.py
│   ├── test_utils.py
│   └── test_services.py
├── integration/                # Entegrasyon testleri
│   ├── __init__.py
│   ├── test_api.py
│   └── test_database.py
└── e2e/                        # End-to-end testler
    ├── __init__.py
    └── test_user_flow.py
Test Class'ları
python
class TestUserService:
    """İlgili testleri bir class'ta grupla."""

    @pytest.fixture(autouse=True)
    def setup(self):
        """Bu class'taki her testten önce çalışan setup."""
        self.service = UserService()

    def test_create_user(self):
        """Kullanıcı oluşturma testi."""
        user = self.service.create_user("Alice")
        assert user.name == "Alice"

    def test_delete_user(self):
        """Kullanıcı silme testi."""
        user = User(id=1, name="Bob")
        self.service.delete_user(user)
        assert not self.service.user_exists(1)

En İyi Uygulamalar

YAPIN
  • TDD'yi takip edin: Koddan önce testleri yazın (red-green-refactor)
  • Bir şeyi test edin: Her test tek bir davranışı doğrulamalı
  • Açıklayıcı isimler kullanın: test_user_login_with_invalid_credentials_fails
  • Fixture'ları kullanın: Tekrarı fixture'larla ortadan kaldırın
  • Harici bağımlılıkları mock'layın: Harici servislere bağımlı olmayın
  • Kenar durumları test edin: Boş input'lar, None değerleri, sınır koşulları
  • %80+ coverage hedefleyin: Kritik yollara odaklanın
  • Testleri hızlı tutun: Yavaş testleri ayırmak için marker'lar kullanın
Show full SKILL.md (152 more words)Show less
YAPMAYIN
  • İmplementasyonu test etmeyin: Davranışı test edin, iç yapıyı değil
  • Testlerde karmaşık koşullar kullanmayın: Testleri basit tutun
  • Test hatalarını göz ardı etmeyin: Tüm testler geçmeli
  • Third-party kodu test etmeyin: Kütüphanelerin çalıştığına güvenin
  • Testler arası state paylaşmayın: Testler bağımsız olmalı
  • Testlerde exception yakalamayın: pytest.raises kullanın
  • Print statement'ları kullanmayın: Assertion'ları ve pytest çıktısını kullanın
  • Çok kırılgan testler yazmayın: Aşırı spesifik mock'lardan kaçının

Yaygın Desenler

API Endpoint'lerini Test Etme (FastAPI/Flask)
python
@pytest.fixture
def client():
    app = create_app(testing=True)
    return app.test_client()

def test_get_user(client):
    response = client.get("/api/users/1")
    assert response.status_code == 200
    assert response.json["id"] == 1

def test_create_user(client):
    response = client.post("/api/users", json={
        "name": "Alice",
        "email": "alice@example.com"
    })
    assert response.status_code == 201
    assert response.json["name"] == "Alice"
Veritabanı Operasyonlarını Test Etme
python
@pytest.fixture
def db_session():
    """Test veritabanı oturumu oluştur."""
    session = Session(bind=engine)
    session.begin_nested()
    yield session
    session.rollback()
    session.close()

def test_create_user(db_session):
    user = User(name="Alice", email="alice@example.com")
    db_session.add(user)
    db_session.commit()

    retrieved = db_session.query(User).filter_by(name="Alice").first()
    assert retrieved.email == "alice@example.com"
Class Metodlarını Test Etme
python
class TestCalculator:
    @pytest.fixture
    def calculator(self):
        return Calculator()

    def test_add(self, calculator):
        assert calculator.add(2, 3) == 5

    def test_divide_by_zero(self, calculator):
        with pytest.raises(ZeroDivisionError):
            calculator.divide(10, 0)

pytest Yapılandırması

pytest.ini
ini
[pytest]
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*
addopts =
    --strict-markers
    --disable-warnings
    --cov=mypackage
    --cov-report=term-missing
    --cov-report=html
markers =
    slow: marks tests as slow
    integration: marks tests as integration tests
    unit: marks tests as unit tests
pyproject.toml
toml
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = [
    "--strict-markers",
    "--cov=mypackage",
    "--cov-report=term-missing",
    "--cov-report=html",
]
markers = [
    "slow: marks tests as slow",
    "integration: marks tests as integration tests",
    "unit: marks tests as unit tests",
]

Testleri Çalıştırma

bash
# Tüm testleri çalıştır
pytest

# Belirli dosyayı çalıştır
pytest tests/test_utils.py

# Belirli testi çalıştır
pytest tests/test_utils.py::test_function

# Verbose çıktı ile çalıştır
pytest -v

# Coverage ile çalıştır
pytest --cov=mypackage --cov-report=html

# Sadece hızlı testleri çalıştır
pytest -m "not slow"

# İlk hataya kadar çalıştır
pytest -x

# N hataya kadar çalıştır
pytest --maxfail=3

# Son başarısız testleri çalıştır
pytest --lf

# Pattern ile testleri çalıştır
pytest -k "test_user"

# Hatada debugger ile çalıştır
pytest --pdb

Hızlı Referans

DesenKullanım
pytest.raises()Beklenen exception'ları test et
@pytest.fixture()Yeniden kullanılabilir test fixture'ları oluştur
@pytest.mark.parametrize()Birden fazla input ile testleri çalıştır
@pytest.mark.slowYavaş testleri işaretle
pytest -m "not slow"Yavaş testleri atla
@patch()Fonksiyonları ve class'ları mock'la
tmp_path fixtureOtomatik geçici dizin
pytest --covCoverage raporu oluştur
assertBasit ve okunabilir assertion'lar

Unutmayın: Testler de koddur. Temiz, okunabilir ve bakımı kolay tutun. İyi testler hata yakalar; harika testler hataları önler.

© affaan-m, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in docs/tr/skills/python-testing of affaan-m/ECC.

Open the folder on GitHubat commit ef648e0

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in affaan-m/ECC, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Python Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Python Testing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Python Testing this skillaffaan-m/ECC274k1 repos~4.9kAutomated safety check: PassMIT
Agent-Core Python TestingopenJiuwen-ai/agent-core441—~2.3kAutomated safety check: PassApache-2.0
Python Testing Patternsjh941213/my-cc-harness12616 repos~5.4kAutomated safety check: PassNone
TDD Guidealirezarezvani/claude-skills28k—~3.4kAutomated safety check: PassMIT
TDD GuideLeoYeAI/openclaw-master-skills2.2k—~1.4kAutomated safety check: PassMIT
TDD GuideaAAaqwq/AGI-Super-Team1052 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Agent-Core Python Testing

    openJiuwen-ai/agent-core

    Pytest patterns for the agent-core codebase: a red-green-refactor workflow, conftest fixtures, custom marks, monkeypatch and patch mocking, and async tests.

    441 GitHub stars~2.3k tokensUpdated 7 days ago
    Testing & QAAuto-check passed
  • Python Testing Patterns

    jh941213/my-cc-harness

    Implement comprehensive testing strategies with pytest, fixtures, mocking, and test-driven development.

    126 GitHub starsUsed in 16 repos~5.4k tokens
    Testing & QAAuto-check passed
  • TDD Guide

    alirezarezvani/claude-skills

    Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and…

    28k GitHub stars~3.4k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • TDD Guide

    LeoYeAI/openclaw-master-skills

    Test-driven development skill for writing unit tests, generating test fixtures and mocks, analyzing coverage gaps, and guiding red-green-refactor workflows across Jest, Pytest, JUnit, Vitest, and…

    2.2k GitHub stars~1.4k tokensUpdated 2 mo ago
    Testing & QAAuto-check passed
  • TDD Guide

    aAAaqwq/AGI-Super-Team

    Test-driven development workflow with test generation, coverage analysis, and multi-framework support

    105 GitHub starsUsed in 2 repos~1.1k tokens
    Testing & QAAuto-check passed
  • Python Testing

    xu-xiang/everything-claude-code-zh

    使用 pytest、TDD 方法论、固件(Fixtures)、模拟(Mocking)、参数化及覆盖率要求的 Python 测试策略。

    2k GitHub stars~3.9k tokensUpdated 7 mo ago
    Testing & QAAuto-check passed

More from affaan-m/ECC

All 657 skills in this repo
  • Skill Stocktake

    affaan-m/ECC

    Audits your installed Claude skills and commands for quality, with a quick mode for recently changed skills and a full mode that evaluates all of them through subagents.

    274k GitHub starsUsed in 5 repos~1.9k tokens
    Auto-check passed
  • Videodb

    affaan-m/ECC

    Ingest, index, search, edit, and monitor video and audio with the VideoDB Python SDK — upload from files, URLs, or RTSP feeds, build spoken and scene indexes with timestamped search and playable…

    274k GitHub starsUsed in 3 repos~3.5k tokens
    Auto-check: notes
  • Rules Distillation

    affaan-m/ECC

    Scans installed skills for principles that recur across them and proposes rule-file changes: append, revise, add a section, create a file or leave as covered.

    274k GitHub starsUsed in 2 repos~2.3k tokens
    Auto-check passed
  • Builds DRAFT counterparty agreements from one markdown template and a small JSON spec per party, with clauses picked by the party's role.

    274k GitHub stars~2.9k tokensUpdated 2 days ago
    Auto-check passed
  • Measures whether agents actually follow a skill, rule or agent definition by generating scenarios at three strictness levels and scoring tool-call traces.

    274k GitHub starsUsed in 1 repo~623 tokens
    Auto-check passed
  • Instinct-based learning system that observes sessions via hooks, creates atomic instincts with confidence scoring, and evolves them into skills/commands/agents.

    274k GitHub stars~3.5k tokensUpdated 2 days ago
    Auto-check passed

Works with

Categories

Questions about Python Testing

What does Python Testing do?

pytest, TDD metodolojisi, fixture'lar, mocking, parametrizasyon ve coverage gereksinimleri kullanarak Python test stratejileri. Python Testing is an agent skill from affaan-m/ECC. pytest, TDD metodolojisi, fixture'lar, mocking, parametrizasyon ve coverage gereksinimleri kullanarak Python test stratejileri.

When should I use Python Testing?

Python Testing fits situations like: tasks that involve Unit testing; tasks that involve Test-driven development.

How do I install Python Testing in Claude Code?

Run `npx skills add affaan-m/ECC --skill python-testing -a claude-code`. Or copy the skill folder (docs/tr/skills/python-testing in affaan-m/ECC) into .claude/skills/python-testing in your project. Claude Code loads it when a task matches its description.

How do I install Python Testing in Codex?

Run `npx skills add affaan-m/ECC --skill python-testing -a codex`. Or copy the skill folder (docs/tr/skills/python-testing in affaan-m/ECC) into .agents/skills/python-testing in your project. Codex loads it when a task matches its description.

Can I use Python Testing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add affaan-m/ECC --skill python-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/python-testing, .gemini/skills/python-testing, .github/skills/python-testing and .opencode/skills/python-testing in your project.

What does Python Testing need to run?

Going by SKILL.md and its folder, Python Testing needs the command-line tools its instructions call (pytest). Our summary lists: Python 3.

Does Python Testing access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Python Testing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Python Testing use?

Python Testing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Python Testing use?

About 4.9k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Python Testing?

Skills that share tags, products or a category with Python Testing: Agent-Core Python Testing (openJiuwen-ai/agent-core, 441 stars), Python Testing Patterns (jh941213/my-cc-harness, 126 stars), TDD Guide (alirezarezvani/claude-skills, 28k stars) and TDD Guide (LeoYeAI/openclaw-master-skills, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Python Testing?

affaan-m (a GitHub user) maintains it in affaan-m/ECC, which has 274,360 GitHub stars. The repository holds 657 skills in this directory. The repository was last updated on October 5, 2026.

Source: affaan-m/ECC on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.