If I've got enough decent infantry, I'll assault them as soon as possible. No good having an army standing outside a city for 7 turns doing nothing. Otherwise, it's usually a good idea to just besiege them and wait outside... mostly within a few turns, the enemy will sally forth and you can smash them in open ground. But that's only usefull when you don't have enough infantry good enough for an assault on the walls.

Oh, and never ever assault through the gates your spy opened for you when they've got stone walls or better...the gates will make toast of your men.