Pular para o conteúdo
Skillpedia
Testes48 mil · #3930

pytest-skill

Ajuda seu agente a criar testes de alta qualidade para código Python usando pytest. Ele configura testes com recursos avançados para garantir que o software funcione corretamente.

O que ela faz

Esta ferramenta ajuda a criar testes automáticos para seu código Python usando a biblioteca pytest. Ela gera testes que verificam se seu código funciona como esperado, incluindo cenários complexos.

Quando usar

  • ✓Quando você precisa escrever testes para seu código Python.
  • ✓Ao usar a biblioteca pytest e quiser aproveitar seus recursos avançados.
  • ✓Para garantir que seu código Python funcione corretamente em diferentes situações.

Exemplo do que pedir para a IA

“Crie testes pytest para minha função que soma dois números, usando fixtures e parametrização.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/pytest-skill/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/pytest-skill/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta usa padrões comuns do pytest, como fixtures para configurar testes, parametrização para testar múltiplos valores e marcadores para organizar testes. Ela pode simular partes do seu código (mocking) para isolar o que está sendo testado.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill pytest-skill

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/pytest-skill/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Habilidade de Teste com Pytest

Quando Usar

Use esta habilidade quando precisar gerar testes pytest de nível de produção em Python com fixtures, parametrização, marcadores, mocking e padrões conftest. Use quando o usuário mencionar "pytest", "conftest", "@pytest.fixture", "@pytest.mark", "Python test". Dispara em: "pytest", "conftest", "Python test", "parametrize", "Python...

Padrões Principais

Teste Básico

import pytest

def test_addition():
    assert 2 + 3 == 5

def test_exception():
    with pytest.raises(ValueError, match="invalid"):
        int("not_a_number")

class TestCalculator:
    def test_add(self):
        calc = Calculator()
        assert calc.add(2, 3) == 5

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

Fixtures

@pytest.fixture
def calculator():
    return Calculator()

@pytest.fixture
def db_connection():
    conn = Database.connect("test_db")
    yield conn  # teardown after yield
    conn.rollback()
    conn.close()

@pytest.fixture(scope="module")
def api_client():
    client = APIClient(base_url="http://localhost:8000")
    yield client
    client.logout()

# conftest.py - shared fixtures
@pytest.fixture(autouse=True)
def reset_state():
    State.reset()
    yield
    State.cleanup()

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

Parametrização

@pytest.mark.parametrize("input,expected", [
    ("hello", 5), ("", 0), ("pytest", 6),
])
def test_string_length(input, expected):
    assert len(input) == expected

@pytest.mark.parametrize("a,b,expected", [
    (2, 3, 5), (-1, 1, 0), (0, 0, 0),
])
def test_add(calculator, a, b, expected):
    assert calculator.add(a, b) == expected

Marcadores

@pytest.mark.slow
def test_large_dataset(): ...

@pytest.mark.skip(reason="Not implemented")
def test_future_feature(): ...

@pytest.mark.skipif(sys.platform == "win32", reason="Unix only")
def test_unix_permissions(): ...

@pytest.mark.xfail(reason="Known bug #123")
def test_known_bug(): ...

Mocking

from unittest.mock import patch, MagicMock

def test_send_email(mocker):
    mock_smtp = mocker.patch("myapp.email.smtplib.SMTP")
    send_welcome_email("user@test.com")
    mock_smtp.return_value.sendmail.assert_called_once()

def test_api_call(mocker):
    mock_response = mocker.Mock()
    mock_response.status_code = 200
    mock_response.json.return_value = {"users": [{"name": "Alice"}]}
    mocker.patch("myapp.service.requests.get", return_value=mock_response)
    users = get_users()
    assert len(users) == 1

@patch("myapp.service.database")
def test_save_user(mock_db):
    mock_db.save.return_value = True
    assert save_user({"name": "Alice"}) is True
    mock_db.save.assert_called_once()

Asserções

assert x == y
assert x != y
assert x in collection
assert isinstance(obj, MyClass)
assert 0.1 + 0.2 == pytest.approx(0.3)

with pytest.raises(ValueError) as exc_info:
    raise ValueError("bad")
assert "bad" in str(exc_info.value)

Anti-Padrões

Ruim Bom Por quê
self.assertEqual() assert x == y pytest rewrites dão melhor saída
Setup em __init__ @pytest.fixture Gerenciamento do ciclo de vida
Estado global Fixture com yield Limpeza adequada
Funções de teste enormes Testes pequenos e focados Depuração mais fácil

Referência Rápida

Tarefa Comando
Executar todos pytest
Executar arquivo pytest tests/test_login.py
Executar específico pytest tests/test_login.py::test_login_success
Por marcador pytest -m slow
Por palavra-chave pytest -k "login and not invalid"
Verbose pytest -v
Parar no primeiro erro pytest -x
Últimos falhos pytest --lf
Cobertura pytest --cov=myapp --cov-report=html
Paralelo pytest -n auto (pytest-xdist)

pyproject.toml

[tool.pytest.ini_options]
testpaths = ["tests"]
markers = ["slow: slow tests", "integration: integration tests"]
addopts = "-v --tb=short"

Padrões Avançados

Para padrões de nível de produção, veja reference/playbook.md:

Seção O que contém
§1 Config pytest.ini + pyproject.toml com marcadores, cobertura
§2 Fixtures Escopo, fábricas, teardown, autouse, tmp_path
§3 Parametrização Básico, com IDs, cartesiano, indireto
§4 Mocking pytest-mock, monkeypatch, spies, variáveis de ambiente
§5 Async pytest-asyncio, fixtures async, cliente async

…

Perguntas frequentes

O que são 'fixtures'?

Fixtures são como preparativos para seus testes. Elas configuram o ambiente ou os dados necessários antes de um teste rodar e podem limpar depois.

O que é 'parametrize'?

Parametrize permite que você execute o mesmo teste várias vezes com dados diferentes, sem ter que escrever o teste repetidamente.

O que é 'mocking'?

Mocking é criar versões falsas de partes do seu código (como chamadas de rede ou banco de dados) para que você possa testar seu código principal isoladamente.

Detalhes

Descrição original do autor

Generates production-grade pytest tests in Python with fixtures, parametrize, markers, mocking, and conftest patterns. Use when user mentions \"pytest\", \"conftest\", \"@pytest.fixture\", \"@pytest.mark\", \"Python test\".

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#3930
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas