Interacting programmatically with serial terminal
I would strongly consider looking into Twisted and the projects using Twisted for Python projects talking to terminals. I have seen a terminal screen scraper written on Twisted, and at least one public telnet client on GitHub - https://github.com/fjogstad/twisted-telnet-client.
I'm not sure which terminal interface you are trying to talk to, but here at least is an example of a terminal emulator in Twisted: https://launchpad.net/python-tvi955.
A nice thing about using an asynchronous framework like Twisted would be that you could have one test server driving testing on several virtual machines or physical machines in parallel.