unittest-additions

Additional features to extend python unittest and mock.


Keywords
unittest, mock
License
MIT
Install
pip install unittest-additions==0.1.2

Documentation

unittest_additions

pypi-version

Helpful extras built to make python unittesting easier.

pip install unittest-additions

Features

  • Additional Asserts
  • Temporary Files
  • Runtime Timer
  • mock_open Line Iteration

Example Uses

Below are some example uses for some of the features.

Temporary Files

def test_using_temp_file(self):
    with TestFile(TEST_FILE, TEST_DATA) as tf:
    	# File TEST_FILE now exists with TEST_DATA inside.
        tf.append(MORE_TEST_DATA)
        # File TEST_FILE now has TEST_DATA with MORE_TEST_DATA appended.

    # File TEST_FILE no longer exists.

RunTimer

A RunTimer is provied to help compare run times of code.

with RunTimer() as t:
    t0 = t.split()
    t1 = t.split()

t2 = t.overall()

mock_open Line Iteration

When mocking a file using mock_open, "code-under-test" using line iteration (as in the example below) will not work as expected. (do_something will not be called.)

def my_function(fn):
    with open(fn, 'r') as f:
        for l in f:
    	    do_something(l)

To enable line iteration you can use add_line_iter_to_mock_open.

    @patch('builtins.open', new_callable=mock_open, read_data='line 0\nline 1\n')
    def test_function(self, open_mock):

        add_line_iter_to_mock_open(open_mock)

        # Line iteration over the mock_open read_data will now work.

Additional Asserts

To use the additional asserts, add the mixin to your TestCase class.

class MixedTestCase(TestCase, AdditionalAssertsMixin):
    def test_a_test:
        self.assertIsEmpty([])
        self.assertIsNotEmpty(('hello',))

The new asserts are:

Method Checks that ...
assertIsEmpty(c) len(c) == 0
assertIsNotEmpty(c) len(c) > 0