Skip to main content

Unit Test Helpers

About

Unit Test Helpers (uth) is a simple library for Python containing some helper methods for unit testing.

I found myself writing a lot of setup code using unittest.mock.patch and unittest.TestCase.addCleanup:

class MyTestCase(unittest.TestCase):
    def setUp(self):
        patcher = unittest.mock.patch('module.function')
        patcher.start()
        self.addCleanup(patcher.stop)

        # Or if there was many functions and/or objects to patch
        # something like:
        for patcher in (
            unittest.mock.patch('function_a'),
            unittest.mock.patch('function_b'),
        ):
            patcher.start()
            self.addCleanup(patcher.stop)

Adding helper methods to TestCase classes (via mixin class) allows easier patching:

import unittest
import unittest.mock

import uth


def function_a():
    return None


class MyTestCase(unittest.TestCase, uth.MockMixin):
    def setUp(self):
        # The function function_a is immediately patched and patching is stopped
        # automatically after the test has run (using unittest.TestCase.addCleanup).
        mock = self.patched('{}.function_a'.format(__name__), return_value=self.sentinel.retval)

    def test_function_a(self):
        self.assertEqual(function_a(), self.sentinel.retval)

    def test_sentinel(self):
        self.assertEqual(self.sentinel.value, unittest.mock.sentinel.value)

    def test_mock(self):
        mock = self.mock(return_value=self.sentinel.retval)
        self.assertIsInstance(mock, unittest.mock.Mock)

The patched method is the only one that actually provides functionality not directly present in unittest.mock. The members mock, patch and sentinel are provided for convenience; you don’t need to import unittest.mock and you can access mock related functionality through self.

API

uth.MockMixin

A mixin class for unittest.TestCase (or any other class from which you want to use Mock, sentinel and/or patch).

The following members are added:

  • ANY

    unittest.mock.ANY

  • sentinel (property)

    Access to unittest.mock.sentinel

  • call(*args, **kwargs)

    unittest.mock.call

  • mock(*args, **kwargs)

    Calls unittest.mock.Mock with given arguments

  • magic_mock(*args, **kwargs)

    Calls unittest.mock.MagicMock with given arguments

  • patch(*args, **kwargs)

    Calls unittest.mock.patch with given arguments

  • patched(*args, **kwargs)

    Calls unittest.mock.patch with given arguments, starts the returned patcher, registers stopping the patcher using self.addCleanup and returns the return value of patcher.start (the Mock object).

Metadata

Release files for uth 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uth 1.1.1
File Size Uploaded
uth-1.1.1.tar.gz 2.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uth 1.1.1
File Interpreter ABI Platform
uth-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 6.1 kB

Release files / uth-1.1.1.tar.gz

Download URL uth-1.1.1.tar.gz
Size 2.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c62f952edcc6d6c321917ba9e2cfebed42a7dc2a71f9da740be2aa4c2c08a48d
BLAKE2b-256 checksum
How to use checksums
dff71ac0b2ee17699ad2efa12747ece1c9838b83901d2641d3dd2f8d9282f9b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

Release files / uth-1.1.1-py3-none-any.whl

Download URL uth-1.1.1-py3-none-any.whl
Size 3.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8d6093162159ee7fa8b36584d84f3b827acfcfa726cc7ba8a30c85292cc9e17c
BLAKE2b-256 checksum
How to use checksums
72bd12206ceec2564d1043559678454ba4da848c9850744a954ec48aabdc03ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.2

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page