I have a nested decorator which I am calling based on a condition. Here is my code decoratorFactory.py def parentDecorator(func): print("parent decorator is initialized") initial=False def wrapped(*args,**kwargs): nonlocal initial if initial: return func(*args,**kwargs) else: initial=True res=func(*args,**kwargs) return res return wrapped def conditionalDecorator(condition): def childDecorator(func): myFunc=parentDecorator(func) def wrapped(*args,**kwargs): if condition(): print(f"{condition()}") return myFunc(*args,**kwargs) else: print(f"{condition()}") return func(*args,**kwargs) return wrapped return childDecorator I am writing unit test to assert that when condition is True i want the wrapped function inside the parentDecorator to be called. import util class TestMyDecorator(unittest.TestCase): @mock.patch("decoratorFactory.parentDecorator") def testConditionalDecorator_modifiesOutput(self,mockParent): mockParent.return_value = lambda:"Hello" with mock.patch("util.get_my_condition",return_value=True): @conditionalDecorator(condition=util.get_my_condition) def testInnerFunction(): return "Hello" self.assertEqual(testInnerFunction(), "Hello") self.assertEqual(mockParent.call_count,1) if __name__=='__main__': unittest.main() here my mockParent.call_count is always 1 irrespective of the condition set and its due to initialization in the conditional decorator. How can i assert that i am executing inside the parent decorator wrapped function when condition is true? Continue reading...