File: test_helpers.py

package info (click to toggle)
python-oslo.log 7.2.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 820 kB
  • sloc: python: 3,815; makefile: 24; sh: 12
file content (79 lines) | stat: -rw-r--r-- 2,759 bytes parent folder | download | duplicates (2)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
#    not use this file except in compliance with the License. You may obtain
#    a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
#    License for the specific language governing permissions and limitations
#    under the License.

from unittest import mock

from oslotest import base as test_base

from oslo_log import helpers


class LogHelpersTestCase(test_base.BaseTestCase):

    def test_log_decorator(self):
        '''Test that LOG.debug is called with proper arguments.'''

        class test_class:
            @helpers.log_method_call
            def test_method(self, arg1, arg2, arg3, *args, **kwargs):
                pass

            @classmethod
            @helpers.log_method_call
            def test_classmethod(cls, arg1, arg2, arg3, *args, **kwargs):
                pass

        args = tuple(range(6))
        kwargs = {'kwarg1': 6, 'kwarg2': 7}

        obj = test_class()
        for method_name in ('test_method', 'test_classmethod'):
            data = {'caller': helpers._get_full_class_name(test_class),
                    'method_name': method_name,
                    'args': args,
                    'kwargs': kwargs}

            method = getattr(obj, method_name)
            with mock.patch('logging.Logger.debug') as debug:
                method(*args, **kwargs)
                debug.assert_called_with(mock.ANY, data)

    def test_log_decorator_for_static(self):
        '''Test that LOG.debug is called with proper arguments.'''

        @helpers.log_method_call
        def _static_method():
            pass

        class test_class:
            @staticmethod
            @helpers.log_method_call
            def test_staticmethod(arg1, arg2, arg3, *args, **kwargs):
                pass

        data = {'caller': 'static',
                'method_name': '_static_method',
                'args': (),
                'kwargs': {}}
        with mock.patch('logging.Logger.debug') as debug:
            _static_method()
            debug.assert_called_with(mock.ANY, data)

        args = tuple(range(6))
        kwargs = {'kwarg1': 6, 'kwarg2': 7}
        data = {'caller': 'static',
                'method_name': 'test_staticmethod',
                'args': args,
                'kwargs': kwargs}
        with mock.patch('logging.Logger.debug') as debug:
            test_class.test_staticmethod(*args, **kwargs)
            debug.assert_called_with(mock.ANY, data)