Well you probably could do it with one controller by storing all the player states and restoring them after unpossess/posses something like
APawn* OldPlayer = Controller->GetPawn();
APlayerState* OldState = Controller->PlayerState;
// advance player and state
// unpossess and possess
OldPlayer->SetPlayerState(OldState);
but it seems a bit hacky and fighting the engine. It would seem better for each to use their own controller.
If you have a gamepad then you should be able to test at least 3 players for taking their turn, no?
Player1: Gamepad
Player2: Keyboard
Player3: Mouse
Granted P3 can only do 2 things, but that should be enough to test players taking their turns? You only really need 2 for that test, really.