Simplify individual tests by defining setUp and tearDown methods.

This commit is contained in:
Skip Montanaro 2008-10-07 01:55:20 +00:00
parent 60b15d20f2
commit 0d8372bdb9
1 changed files with 27 additions and 61 deletions

View File

@ -5,86 +5,52 @@ import atexit
from test import test_support from test import test_support
class TestCase(unittest.TestCase): class TestCase(unittest.TestCase):
def test_args(self): def setUp(self):
# be sure args are handled properly
s = StringIO.StringIO() s = StringIO.StringIO()
sys.stdout = sys.stderr = s sys.stdout = sys.stderr = self.subst_io = s
save_handlers = atexit._exithandlers self.save_handlers = atexit._exithandlers
atexit._exithandlers = [] atexit._exithandlers = []
try:
def tearDown(self):
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__
atexit._exithandlers = self.save_handlers
def test_args(self):
atexit.register(self.h1) atexit.register(self.h1)
atexit.register(self.h4) atexit.register(self.h4)
atexit.register(self.h4, 4, kw="abc") atexit.register(self.h4, 4, kw="abc")
atexit._run_exitfuncs() atexit._run_exitfuncs()
finally: self.assertEqual(self.subst_io.getvalue(),
sys.stdout = sys.__stdout__ "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n")
sys.stderr = sys.__stderr__
atexit._exithandlers = save_handlers
self.assertEqual(s.getvalue(), "h4 (4,) {'kw': 'abc'}\nh4 () {}\nh1\n")
def test_badargs(self): def test_badargs(self):
s = StringIO.StringIO()
sys.stdout = sys.stderr = s
save_handlers = atexit._exithandlers
atexit._exithandlers = []
try:
atexit.register(lambda: 1, 0, 0, (x for x in (1,2)), 0, 0) atexit.register(lambda: 1, 0, 0, (x for x in (1,2)), 0, 0)
self.assertRaises(TypeError, atexit._run_exitfuncs) self.assertRaises(TypeError, atexit._run_exitfuncs)
finally:
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__
atexit._exithandlers = save_handlers
def test_order(self): def test_order(self):
# be sure handlers are executed in reverse order
s = StringIO.StringIO()
sys.stdout = sys.stderr = s
save_handlers = atexit._exithandlers
atexit._exithandlers = []
try:
atexit.register(self.h1) atexit.register(self.h1)
atexit.register(self.h2) atexit.register(self.h2)
atexit.register(self.h3) atexit.register(self.h3)
atexit._run_exitfuncs() atexit._run_exitfuncs()
finally: self.assertEqual(self.subst_io.getvalue(), "h3\nh2\nh1\n")
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__
atexit._exithandlers = save_handlers
self.assertEqual(s.getvalue(), "h3\nh2\nh1\n")
def test_sys_override(self): def test_sys_override(self):
# be sure a preset sys.exitfunc is handled properly # be sure a preset sys.exitfunc is handled properly
save_handlers = atexit._exithandlers
atexit._exithandlers = []
exfunc = sys.exitfunc exfunc = sys.exitfunc
sys.exitfunc = self.h1 sys.exitfunc = self.h1
reload(atexit) reload(atexit)
s = StringIO.StringIO()
sys.stdout = sys.stderr = s
try: try:
atexit.register(self.h2) atexit.register(self.h2)
atexit._run_exitfuncs() atexit._run_exitfuncs()
finally: finally:
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__
atexit._exithandlers = save_handlers
sys.exitfunc = exfunc sys.exitfunc = exfunc
self.assertEqual(s.getvalue(), "h2\nh1\n") self.assertEqual(self.subst_io.getvalue(), "h2\nh1\n")
def test_raise(self): def test_raise(self):
# be sure raises are handled properly
s = StringIO.StringIO()
sys.stdout = sys.stderr = s
save_handlers = atexit._exithandlers
atexit._exithandlers = []
try:
atexit.register(self.raise1) atexit.register(self.raise1)
atexit.register(self.raise2) atexit.register(self.raise2)
self.assertRaises(TypeError, atexit._run_exitfuncs) self.assertRaises(TypeError, atexit._run_exitfuncs)
finally:
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__
atexit._exithandlers = save_handlers
### helpers ### helpers
def h1(self): def h1(self):