Хорошо, чтобы прояснить ситуацию:
При условии, что ваши модули живут в пакете mypackage
, а ваш модуль calculate_time.py
с декоратором выглядит так:
from mypackage.dbconn import DBConn
def calculate_time(func):
def inner1(*args, **kwargs):
...
И у вас есть модуль factorial.py
с:
from mypackage.calculate_time import calculate_time
@calculate_time
def factorial(num):
time.sleep(2)
print(math.factorial(num))
Тогда ваш тест может выглядеть так:
from unittest.mock import patch
from mypackage.factorial import factorial
class FakeConn:
def logTime(self, begin, end):
print(begin, end)
@patch('mypackage.calculate_time.DBConn', new=FakeConn)
def test_factorial():
print(factorial(10))