import unittest | |
from .support import LoggingResult | |
class Test_TestSkipping(unittest.TestCase): | |
def test_skipping(self): | |
class Foo(unittest.TestCase): | |
def test_skip_me(self): | |
self.skipTest("skip") | |
events = [] | |
result = LoggingResult(events) | |
test = Foo("test_skip_me") | |
test.run(result) | |
self.assertEqual(events, ['startTest', 'addSkip', 'stopTest']) | |
self.assertEqual(result.skipped, [(test, "skip")]) | |
# Try letting setUp skip the test now. | |
class Foo(unittest.TestCase): | |
def setUp(self): | |
self.skipTest("testing") | |
def test_nothing(self): pass | |
events = [] | |
result = LoggingResult(events) | |
test = Foo("test_nothing") | |
test.run(result) | |
self.assertEqual(events, ['startTest', 'addSkip', 'stopTest']) | |
self.assertEqual(result.skipped, [(test, "testing")]) | |
self.assertEqual(result.testsRun, 1) | |
def test_skipping_decorators(self): | |
op_table = ((unittest.skipUnless, False, True), | |
(unittest.skipIf, True, False)) | |
for deco, do_skip, dont_skip in op_table: | |
class Foo(unittest.TestCase): | |
@deco(do_skip, "testing") | |
def test_skip(self): pass | |
@deco(dont_skip, "testing") | |
def test_dont_skip(self): pass | |
test_do_skip = Foo("test_skip") | |
test_dont_skip = Foo("test_dont_skip") | |
suite = unittest.TestSuite([test_do_skip, test_dont_skip]) | |
events = [] | |
result = LoggingResult(events) | |
suite.run(result) | |
self.assertEqual(len(result.skipped), 1) | |
expected = ['startTest', 'addSkip', 'stopTest', | |
'startTest', 'addSuccess', 'stopTest'] | |
self.assertEqual(events, expected) | |
self.assertEqual(result.testsRun, 2) | |
self.assertEqual(result.skipped, [(test_do_skip, "testing")]) | |
self.assertTrue(result.wasSuccessful()) | |
def test_skip_class(self): | |
@unittest.skip("testing") | |
class Foo(unittest.TestCase): | |
def test_1(self): | |
record.append(1) | |
record = [] | |
result = unittest.TestResult() | |
test = Foo("test_1") | |
suite = unittest.TestSuite([test]) | |
suite.run(result) | |
self.assertEqual(result.skipped, [(test, "testing")]) | |
self.assertEqual(record, []) | |
def test_expected_failure(self): | |
class Foo(unittest.TestCase): | |
@unittest.expectedFailure | |
def test_die(self): | |
self.fail("help me!") | |
events = [] | |
result = LoggingResult(events) | |
test = Foo("test_die") | |
test.run(result) | |
self.assertEqual(events, | |
['startTest', 'addExpectedFailure', 'stopTest']) | |
self.assertEqual(result.expectedFailures[0][0], test) | |
self.assertTrue(result.wasSuccessful()) | |
def test_unexpected_success(self): | |
class Foo(unittest.TestCase): | |
@unittest.expectedFailure | |
def test_die(self): | |
pass | |
events = [] | |
result = LoggingResult(events) | |
test = Foo("test_die") | |
test.run(result) | |
self.assertEqual(events, | |
['startTest', 'addUnexpectedSuccess', 'stopTest']) | |
self.assertFalse(result.failures) | |
self.assertEqual(result.unexpectedSuccesses, [test]) | |
self.assertTrue(result.wasSuccessful()) | |
def test_skip_doesnt_run_setup(self): | |
class Foo(unittest.TestCase): | |
wasSetUp = False | |
wasTornDown = False | |
def setUp(self): | |
Foo.wasSetUp = True | |
def tornDown(self): | |
Foo.wasTornDown = True | |
@unittest.skip('testing') | |
def test_1(self): | |
pass | |
result = unittest.TestResult() | |
test = Foo("test_1") | |
suite = unittest.TestSuite([test]) | |
suite.run(result) | |
self.assertEqual(result.skipped, [(test, "testing")]) | |
self.assertFalse(Foo.wasSetUp) | |
self.assertFalse(Foo.wasTornDown) | |
def test_decorated_skip(self): | |
def decorator(func): | |
def inner(*a): | |
return func(*a) | |
return inner | |
class Foo(unittest.TestCase): | |
@decorator | |
@unittest.skip('testing') | |
def test_1(self): | |
pass | |
result = unittest.TestResult() | |
test = Foo("test_1") | |
suite = unittest.TestSuite([test]) | |
suite.run(result) | |
self.assertEqual(result.skipped, [(test, "testing")]) | |
if __name__ == '__main__': | |
unittest.main() |