Я тестирую в django и использую decorator mock.patch.object () для методов насмешливых объектов. Я хочу использовать те же декораторы в другой функции этого класса. Для этого я переместил декораторы из функции в класс. Это решило мою проблему, но теперь я хочу добавить еще одну тестовую функцию, которая не должна насмехаться над этими функциями.
@mock.patch.object(MyClass, 'class_fun_2')
@mock.patch.object(MyClass, 'class_fun_1')
class TestClass(testcases.TestCase):
def setUp(self):
# contains my setup that I want to use in all functions for this test class
def test_function_1(self, mocked_class_fun_1, mocked_class_fun_2):
# I want to use those mocked functions here
def test_function_2(self, mocked_class_fun_1, mocked_class_fun_2):
# I want to use those mocked functions here too
def test_function_3(self):
# I do not want to use those mocked functions here
Если я это сделаю, выдается ошибка:
TypeError: test_function_3() takes 1 positional argument but 3 were given
Так что же мне делать, чтобы я мог использовать setUp во всех функциях и смоделированные функции только в двух функциях?
PS: я показал только 2 смоделированные функции, но на самом деле я имитирую 8 функций, поэтому повторение mock.patch может быть не очень хорошей идеей.