Исправление Python.декоратор объекта не может получить доступ к методу класса

#python #mocking #python-unittest #python-mock

#python #издевательство #python-unittest #python-макет

Вопрос:

У меня есть тестовый пример ниже:

 class Foo(unittest.TestCase):

    @staticmethod
    def my_method():
        ...

    def test_01(self):

        with patch.object(bar, 'method_to_be_mocked', side_effect=Foo.my_method):
            test_stuff()


    def test_02(self):

        with patch.object(bar, 'method_to_be_mocked', side_effect=Foo.my_method):
            test_stuff()


     ... ...
    def test_10(self):

        with patch.object(bar, 'method_to_be_mocked', side_effect=Foo.my_method):
            test_stuff()
  

В принципе, я использую Foo.my_method для издевательства method_to_be_mocked Вышеуказанное работает нормально, но, как вы можете видеть, у меня есть 10 таких тестовых примеров, и я не хочу писать «с patch.object …» десять раз. Поэтому я хочу использовать декоратор и сделать что-то вроде этого:

 @patch.object(bar, 'method_to_be_mocked', side_effect=Foo.my_method):
class Foo(unittest.TestCase):

    @staticmethod
    def my_method():
        ...

    def test_01(self):
            test_stuff()


    def test_02(self):
            test_stuff()


     ... ...
    def test_10(self):
            test_stuff()
  

Но он говорит мне, что Foo это не определено?

Комментарии:

1. Почему бы вам не определить my_method вне класса?

2. Смоделируйте его в методе установки.