While your macro is a bit overkill and a solution has already been provided in the above post, let this be a lesson in paying attention to the order of things in a macro.

/cleartarget
/clearfocus
/tar [target=ToonA, nodead] [target=ToonB, nodead]
/focus
/assist
/follow

Does not work while

/cleartarget
/clearfocus
/tar [target=ToonA, nodead] [target=ToonB, nodead]
/focus
/follow
/assist


will work. Then to further refine your macro look at redundant lines. In this case /clearfocus followed by setting the focus. Since you can only focus one thing there is no need for /clearfocus here, as any focus target you may have will be overwritten in 2 lines. The same would go for your current target. So now your macro becomes:

/target [target=ToonA, nodead] [target=ToonB, nodead]
/focus
/follow
/assist

And that would be as simple as it could get using your provided macro. Using this simple checking process you can create and troubleshoot just about any macro. Just think about whats going on line by line first. The trim up the overkill lines. Other important information concerning macros.

1) The first parameter that provides a true statement to a valid target in a single line is used.
2) The LAST valid line in a series of statements is used.

An example

/target [target=toonA][target=toonB] ------ will choose toon A as the target.

/target toonA
/target toonB ------- will choose toon B as the target.