class TestLead(unittest.TestCase): def setUp(self): self.lead = Lead("test", db=TEST_DB) # fork the understudy self.p = Process(target=start_understudy, args=("test",)) self.p.start() def tearDown(self): self.p.terminate() def test_shell(self): # non-blocking while True: try: result = self.lead.shell('echo "test"') break except NoUnderstudiesError: pass self.assertTrue(isinstance(result, Result)) self.assertTrue(re.match(UUID, result.uuid)) actual_result = result.check() while not actual_result: actual_result = result.check() self.assertEquals("test\n", actual_result) # blocking result = self.lead.shell('echo "test"', block=True) self.assertEquals("test\n", result)