Насмешки из метода декоратора применяются перед декоратором класса. Т.е. mock_method_A
- это макет для method2
, а mock_method_B
- это макет для method1
См. Этот автономный пример для иллюстрации:
from unittest import TestCase, main, mock
def method1():
return 1
def method2():
return 2
@mock.patch('test.method2', return_value='method2')
@mock.patch('test.method1', return_value='method1')
class TestClassDecoratorOrder(TestCase):
def test_order(self, mock_method1, mock_method2):
self.assertEqual(mock_method1(), 'method1')
self.assertEqual(mock_method2(), 'method2')
class TestMethodDecoratorOrder(TestCase):
@mock.patch('test.method2', return_value='method2')
@mock.patch('test.method1', return_value='method1')
def test_order(self, mock_method1, mock_method2):
self.assertEqual(mock_method1(), 'method1')
self.assertEqual(mock_method2(), 'method2')
@mock.patch('test.method2', return_value='method2')
class TestCombinedDecoratorOrder(TestCase):
@mock.patch('test.method1', return_value='method1')
def test_order(self, mock_method1, mock_method2):
self.assertEqual(mock_method1(), 'method1')
self.assertEqual(mock_method2(), 'method2')
if __name__ == "__main__":
main()