[Python] how to mock assert that my parent decorator is called

Discussão em 'Python' iniciado por Stack, Agosto 30, 2025.

  1. Stack

    Stack Membro Participativo

    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...

Compartilhe esta Página