The order of your patches should be reversed, as they are applied bottom up. See this comment in the python docs on nested mock arguments:
Note When you nest patch decorators the mocks are passed in to the
decorated function in the same order they applied (the normal python
order that decorators are applied). This means from the bottom up, so
in the example above the mock for module.ClassName1 is passed in
first.