File: utils.py

package info (click to toggle)
python-baycomp 1.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 600 kB
  • sloc: python: 879; makefile: 12
file content (27 lines) | stat: -rw-r--r-- 1,011 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import unittest
from unittest.mock import patch, Mock


class TestTestBase(unittest.TestCase):
    def assert_forwards(self, class_, method_name, *args,
                        new_args=None, new_kwargs=None,
                        meth_args=None, meth_kwargs=None, **kwargs):
        def default(x, value):
            return x if x is not None else value
        new_args = default(new_args, args)
        new_kwargs = default(new_kwargs, kwargs)
        meth_args = default(meth_args, ())
        meth_kwargs = default(meth_kwargs, {})

        mockres = object()
        mockmethod = Mock(return_value=mockres)
        with patch.object(
                class_, "__new__",
                return_value=Mock(**{method_name: mockmethod})) as mocknew:
            method = getattr(class_, method_name)
            self.assertEqual(method(*args, **kwargs), mockres)
            mocknew.assert_called_with(class_, *new_args, **new_kwargs)
            mockmethod.assert_called_with(*meth_args, **meth_kwargs)