Defensively, Poison are meant to be either:
Tanky types like Muk, with its high defense and access to Acid Armor, or Skuntank or Drapion, whose Dark type cancels out most of Poison's weaknesses.
Or Glass Cannons/Fragile Speedsters like the Gengar family, Weezing family, and anything Bug/Poison.
They have two common weaknesses in Psychic and Ground, and they don't tend to have good sp.def.
On the other hand:
When used defensively, the Poison type is considered one of the best in the game. This is because of its ability to block or cause status ailments and resist common moves. Its obvious weakness, Earthquake, can be mitigated by the variety of dual-typed Grass and Bug/Poison Pokémon, as well as the Zubat family's Flying type and the Gastly and Koffing families' Levitate. Additionally, the Poison type resists itself, Bug, Fighting, and Grass, giving it resistances to common moves such as Grass Knot, X-Scissor, and Close Combat. Moreover, Poison-types tend to hold potent status and support moves, such as Toxic Spikes, and Toxic. Immune to Poison and Toxic Spikes themselves, they have an opportunity to absorb status effects as well. Koga's words of "confusion, sleep, poison" describe the Poison type very well.
Offensively:
Offensively, Poison-type moves are only suggested for inflicting the Poison condition, STAB or using support moves. Its only strength, which is against the Grass-type is largely mitigated by the variety of Grass/Poison Pokémon as well as Torterra's Ground, Lileep and Cradily's Rock, and especially Ferroseed and Ferrothorn's Steel. Ice, Fire, Flying, and even Bug (to some extent) are much more useful in countering the Grass-type. Also, Poison moves are not very effective on Poison, Rock, Ghost, or Ground, and are completely ineffective against Steel. Hence, resistances to the Poison type are far more common than weaknesses to it. Poison-type moves are better when used to wear down the opponent in long battles rather than to knock out the opponent in a few moves.