Testing Strategies

Python TestingFree Lesson

Advertisement

Testing Strategies

Test coverage, mocking strategies, and test organization.

Overview

Master testing strategies.

Coverage

# Run with coverage
# pytest --cov=myapp --cov-report=html

# Coverage configuration in .coveragerc
[run]
source = myapp
omit = tests/*

[report]
exclude_lines =
    pragma: no cover
    def __repr__
    raise NotImplementedError

Mocking Strategies

from unittest.mock import Mock, patch, AsyncMock

# Mock async functions
async def fetch_data():
    return {"data": "test"}

@patch('__main__.fetch_data', new_callable=AsyncMock)
async def test_fetch(mock_fetch):
    mock_fetch.return_value = {"data": "mocked"}
    result = await fetch_data()
    assert result == {"data": "mocked"}

# Mock class methods
with patch.object(MyClass, 'method', return_value="mocked"):
    obj = MyClass()
    assert obj.method() == "mocked"

Test Fixtures

import pytest
from datetime import datetime

@pytest.fixture
def sample_user():
    return {
        "name": "Alice",
        "email": "alice@example.com",
        "created_at": datetime.now()
    }

@pytest.fixture
def mock_db():
    db = Mock()
    db.users.find.return_value = []
    return db

def test_create_user(sample_user, mock_db):
    user = create_user(sample_user, mock_db)
    mock_db.users.insert.assert_called_once()

Practice

Write tests for an async API with proper mocking.

Advertisement

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement