import unittest import socket import contextlib import sys from fabric.api import local from CeibalEncuesta import WebServer @contextlib.contextmanager def redirect_stdout(stream): sys.stdout = sys.stderr = stream yield sys.stdout = sys.__stdout__ class ContainerTest(unittest.TestCase): def setUp(self): self.result = local('python CeibalEncuesta.py', capture=True) def test_base_run(self): result = self.result command_succeeded = (result.return_code == 0) self.assertTrue(command_succeeded) def test_start_web_server(self): result = self.result self.assertIn('Opening web server', result) def test_start_browser(self): result = self.result self.assertIn('Opening browser', result) class WebServerTest(unittest.TestCase): def test_connection(self): with open('/dev/null') as null: with redirect_stdout(null): webserver = WebServer() webserver.start() try: s = socket.socket() s.connect(("localhost", 9004)) except Exception as e: self.fail(e) finally: s.close() webserver.stop() if __name__ == '__main__': unittest.main()