import py from py.__.test.outcome import Skipped, Failed, Passed, Outcome from unittest import TestCase as TC from conftest import TestCaseInstance as TCI, UnitTestFunction as UTF def get_test(testclass, name): tci = TCI(name='dummy', parent=None) tci.obj = testclass(methodName='run') utf = UTF(name=name, parent=tci) return tci, utf class TestTestCaseInstance(object): def test_simple_unittest(self): class MyTestCase(TC): def test_passing(self): self.assertEquals('foo', 'foo') obj, test = get_test(MyTestCase, 'test_passing') res = test.run() assert res is None def test_simple_failing(self): class MyTestCase(TC): def test_failing(self): self.assertEquals('foo', 'bar') obj, test = get_test(MyTestCase, 'test_failing') py.test.raises(Failed, 'test.run()') def test_setup(self): class MyTestCase(TC): def setUp(self): self.foo = 1 def test_setUp(self): self.assertEquals(1, self.foo) obj, test = get_test(MyTestCase, 'test_setUp') res = test.run() assert res is None def test_teardown(self): class MyTestCase(TC): def setUp(self): self.foo = 1 def test_setUp_tearDown(self): self.assertEquals(1, self.foo) def tearDown(self): del self.foo obj, test = get_test(MyTestCase, 'test_setUp_tearDown') res = test.run() assert res is None assert not hasattr(obj, 'foo') def test_teardown_failing(self): class MyTestCase(TC): def setUp(self): self.foo = 1 def test_failing(self): self.assertEquals(2, self.foo) def tearDown(self): del self.foo obj, test = get_test(MyTestCase, 'test_failing') obj.obj.foo = 2 py.test.raises(Failed, 'test.run()') assert not hasattr(obj.obj, 'foo')