Fantina has these moves on her Pokemon:
Drifblim (32): Ominous Wind, Gust, Astonish, Minimize
Gengar/Rick Gastly (34): Shadow Claw, Poison Jab, Spite, Confuse Ray
Mismagius (36, Sitrus Berry): Shadow Ball, Magical Leaf, Psybeam, Confuse Ray
Immediately you can see her Drifblim is no the greatest battler, with her only attacking moves besides Ominous Wind being astonishingly bad. Minimize is annoying, however if you have a Pokemon with Taunt, this isn't too much of a problem. A great Pokemon for this role is Murkrow. It has a type advantage against all Pokemon, it has Taunt for the Drifblim, and learns it naturally at Level 31. It also learns STAB Faint Attack at Level 35, a great move for the gym. If you have the TM for Thief, you can use this to steal Mismagius' Sitrus Berry. A good moveset would be:
- Faint Attack
- Night Shade
- Filler/Thief (TM only)
The other Pokemon are stronger, but not too strong. Her Gengar seems to be pretty powerful, but all of his attacking moves are physical based, and Gengar has poor physical attack. With Taunt, you can basically shut his
shenanigans down to the bare minimum. Mismagius is definitely her best Pokemon, however as Murkrow you resist 2 of its moves, are immune to 1 and can Taunt the other. A few Faint Attack's and she'll go down.
I just noticed your question said where to train
Her average level is 34, so aim for that level. You can grind at Routes 212 and 213, however not the levels are quite low. You can repeatedly lose to Fantina to gain levels, but It can get annoying after a while. Most areas in this game have bad leveling, so try to get to the low/mid 30s (this is probably the best level range) With a good enough strategy, you may not even need to grind for her.