Skip to main content

Python project: mockbuster

Project description

mockbuster

A Python linter that detects and reports all uses of mocking in test files.

Installation

pip install mockbuster

Usage

As a library

Detect mocking usage in Python code:

from mockbuster import detect_mocks

code = """
from unittest.mock import Mock

def test_foo():
    mock_obj = Mock()
    assert mock_obj is not None
"""

violations = detect_mocks(code)
assert len(violations) == 1
assert violations[0]["line"] == 2
assert "unittest.mock" in violations[0]["message"]

Detect patch decorator usage:

from mockbuster import detect_mocks

code = """
from unittest.mock import patch

@patch('some.module')
def test_bar(mock_module):
    pass
"""

violations = detect_mocks(code)
assert len(violations) == 1
assert violations[0]["line"] == 2
assert "patch" in violations[0]["message"]

Detect pytest-mock usage:

from mockbuster import detect_mocks

code = """
def test_baz(mocker):
    mocker.patch('some.module')
"""

violations = detect_mocks(code)
assert len(violations) == 1
assert violations[0]["line"] == 2
assert "mocker" in violations[0]["message"]

Detect MagicMock usage:

from mockbuster import detect_mocks

code = """
from unittest.mock import MagicMock

def test_qux():
    magic = MagicMock()
"""

violations = detect_mocks(code)
assert len(violations) == 1

Clean code with no mocking returns empty list:

from mockbuster import detect_mocks

code = """
def test_clean():
    result = 1 + 1
    assert result == 2
"""

violations = detect_mocks(code)
assert len(violations) == 0

As a CLI

Scan a single file:

mockbuster tests/test_example.py

Scan a directory:

mockbuster tests/

Exit with error code if mocks found:

mockbuster tests/ --strict

Development

# Install dependencies
uv sync

# Run tests
uv run pytest

# Run pre-commit hooks
uv run pre-commit run --all-files

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mockbuster-0.1.2.tar.gz (181.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mockbuster-0.1.2-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file mockbuster-0.1.2.tar.gz.

File metadata

  • Download URL: mockbuster-0.1.2.tar.gz
  • Upload date:
  • Size: 181.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mockbuster-0.1.2.tar.gz
Algorithm Hash digest
SHA256 872850c70e304f01b7e3e81f43f2e76f5ad1285ea8be49a26a3161ce6e76a3b2
MD5 f95c3208a5396a544ebf05f85a69e6a2
BLAKE2b-256 15b840c05a45ad39375bb976766fb91095387665c95187a3a5103dd05b70d238

See more details on using hashes here.

Provenance

The following attestation bundles were made for mockbuster-0.1.2.tar.gz:

Publisher: ci.yml on benomahony/mockbuster

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mockbuster-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: mockbuster-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mockbuster-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0390ab42eb4d88948a0329d7cc0b74c9e0ca1a376b09e59eda28a7a989ef742b
MD5 a09003d58c59010aba84de2c41fce88e
BLAKE2b-256 274f1c6fd36e2254ae7c286176371325ae3f132da358138c5c43fd7d9abe77f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for mockbuster-0.1.2-py3-none-any.whl:

Publisher: ci.yml on benomahony/mockbuster

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page