Скинь код — получи готовые тесты за минуту. Unit, интеграционные, edge cases — агент покрывает всё, что ты откладывал на потом
type PaymentService interface {
CreatePayment(ctx context.Context, req CreatePaymentRequest) (*Payment, error)
GetPayment(ctx context.Context, id string) (*Payment, error)
ProcessWebhook(ctx context.Context, payload []byte, signature string) error
RefundPayment(ctx context.Context, id string, amount int64) (*Refund, error)
}
type PaymentRepository interface {
Save(ctx context.Context, p *Payment) error
FindByID(ctx context.Context, id string) (*Payment, error)
UpdateStatus(ctx context.Context, id string, status Status) error
}func TestCreatePayment_Success(t *testing.T) { ... }
func TestCreatePayment_BelowMinimum(t *testing.T) { ... }
func TestCreatePayment_AboveMaximum(t *testing.T) { ... }
func TestCreatePayment_InvalidCurrency(t *testing.T) { ... }
func TestCreatePayment_IdempotencyKey_Duplicate(t *testing.T) { ... }
func TestCreatePayment_GatewayTimeout_Retry(t *testing.T) { ... }
func TestCreatePayment_GatewayError_NoRetry(t *testing.T) { ... }
func TestCreatePayment_DBError_Rollback(t *testing.T) { ... }
func TestCreatePayment_ZeroAmount(t *testing.T) { ... }
func TestCreatePayment_NegativeAmount(t *testing.T) { ... }
func TestCreatePayment_ConcurrentSameKey(t *testing.T) { ... }
// + ещё 4 edge casesimport pytest
from unittest.mock import Mock, patch
@pytest.fixture
def mock_db():
db = Mock()
db.session = Mock()
return db
@pytest.fixture
def user_service(mock_db, mock_cache):
return UserService(db=mock_db, cache=mock_cache)
@pytest.mark.parametrize("email,expected", [
("user@example.com", True),
("invalid", False),
("", False),
("a@b", False),
])
def test_validate_email(user_service, email, expected):
assert user_service.validate_email(email) == expected
def test_create_user_success(user_service, mock_db):
user = user_service.create(name="Иван", email="ivan@test.com")
assert user.name == "Иван"
mock_db.session.commit.assert_called_once()7 дней без ограничений. Настройка за 3 минуты — бот уже ждёт в Telegram.
Попробовать за 490 ₽ — 7 дней ← ИИ агент для программиста