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.3.tar.gz (187.2 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.3-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mockbuster-0.1.3.tar.gz
  • Upload date:
  • Size: 187.2 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.3.tar.gz
Algorithm Hash digest
SHA256 6ad9142e8e8f7afd26fc22551bfb90194e0021504ad6c21ec4b6d2ca53f7f9bb
MD5 db8dca0e088385eb2290e8b90bba97a3
BLAKE2b-256 c79568817dd9f0d809c73d26d11ec55fcc119402ced2b95a0db3cf3626648479

See more details on using hashes here.

Provenance

The following attestation bundles were made for mockbuster-0.1.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: mockbuster-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 7.1 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 52f482fc0ed68375aa962a56735fffbe56a36e65c763820b4ecbbdf8106ed1c2
MD5 6cdfbbbff1e51ecb70b4cb1c0f27b735
BLAKE2b-256 de7c876e2c619fed8cdbdcdea9df87cdead8d09a883a7366a1518bc57ab64110

See more details on using hashes here.

Provenance

The following attestation bundles were made for mockbuster-0.1.3-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