diff options
| author | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-03-27 12:34:21 +0000 | 
|---|---|---|
| committer | Michael Foord <fuzzyman@voidspace.org.uk> | 2010-03-27 12:34:21 +0000 | 
| commit | 2560e5cf5335011a3cb81562fe4028a0fb8c35da (patch) | |
| tree | 42c2935dbd2388f142fff184457d548a1d073140 /Lib/unittest/test/test_functiontestcase.py | |
| parent | ab4d63b7f7f79d9cb5780b0666923aa05513b3bf (diff) | |
| download | cpython-git-2560e5cf5335011a3cb81562fe4028a0fb8c35da.tar.gz | |
Breaking test_unittest.py into a package. Manual merge of revision 79432.
Diffstat (limited to 'Lib/unittest/test/test_functiontestcase.py')
| -rw-r--r-- | Lib/unittest/test/test_functiontestcase.py | 144 | 
1 files changed, 144 insertions, 0 deletions
| diff --git a/Lib/unittest/test/test_functiontestcase.py b/Lib/unittest/test/test_functiontestcase.py new file mode 100644 index 0000000000..ab46785389 --- /dev/null +++ b/Lib/unittest/test/test_functiontestcase.py @@ -0,0 +1,144 @@ +import unittest + +from .support import LoggingResult + + +class Test_FunctionTestCase(unittest.TestCase): + +    # "Return the number of tests represented by the this test object. For +    # TestCase instances, this will always be 1" +    def test_countTestCases(self): +        test = unittest.FunctionTestCase(lambda: None) + +        self.assertEqual(test.countTestCases(), 1) + +    # "When a setUp() method is defined, the test runner will run that method +    # prior to each test. Likewise, if a tearDown() method is defined, the +    # test runner will invoke that method after each test. In the example, +    # setUp() was used to create a fresh sequence for each test." +    # +    # Make sure the proper call order is maintained, even if setUp() raises +    # an exception. +    def test_run_call_order__error_in_setUp(self): +        events = [] +        result = LoggingResult(events) + +        def setUp(): +            events.append('setUp') +            raise RuntimeError('raised by setUp') + +        def test(): +            events.append('test') + +        def tearDown(): +            events.append('tearDown') + +        expected = ['startTest', 'setUp', 'addError', 'stopTest'] +        unittest.FunctionTestCase(test, setUp, tearDown).run(result) +        self.assertEqual(events, expected) + +    # "When a setUp() method is defined, the test runner will run that method +    # prior to each test. Likewise, if a tearDown() method is defined, the +    # test runner will invoke that method after each test. In the example, +    # setUp() was used to create a fresh sequence for each test." +    # +    # Make sure the proper call order is maintained, even if the test raises +    # an error (as opposed to a failure). +    def test_run_call_order__error_in_test(self): +        events = [] +        result = LoggingResult(events) + +        def setUp(): +            events.append('setUp') + +        def test(): +            events.append('test') +            raise RuntimeError('raised by test') + +        def tearDown(): +            events.append('tearDown') + +        expected = ['startTest', 'setUp', 'test', 'addError', 'tearDown', +                    'stopTest'] +        unittest.FunctionTestCase(test, setUp, tearDown).run(result) +        self.assertEqual(events, expected) + +    # "When a setUp() method is defined, the test runner will run that method +    # prior to each test. Likewise, if a tearDown() method is defined, the +    # test runner will invoke that method after each test. In the example, +    # setUp() was used to create a fresh sequence for each test." +    # +    # Make sure the proper call order is maintained, even if the test signals +    # a failure (as opposed to an error). +    def test_run_call_order__failure_in_test(self): +        events = [] +        result = LoggingResult(events) + +        def setUp(): +            events.append('setUp') + +        def test(): +            events.append('test') +            self.fail('raised by test') + +        def tearDown(): +            events.append('tearDown') + +        expected = ['startTest', 'setUp', 'test', 'addFailure', 'tearDown', +                    'stopTest'] +        unittest.FunctionTestCase(test, setUp, tearDown).run(result) +        self.assertEqual(events, expected) + +    # "When a setUp() method is defined, the test runner will run that method +    # prior to each test. Likewise, if a tearDown() method is defined, the +    # test runner will invoke that method after each test. In the example, +    # setUp() was used to create a fresh sequence for each test." +    # +    # Make sure the proper call order is maintained, even if tearDown() raises +    # an exception. +    def test_run_call_order__error_in_tearDown(self): +        events = [] +        result = LoggingResult(events) + +        def setUp(): +            events.append('setUp') + +        def test(): +            events.append('test') + +        def tearDown(): +            events.append('tearDown') +            raise RuntimeError('raised by tearDown') + +        expected = ['startTest', 'setUp', 'test', 'tearDown', 'addError', +                    'stopTest'] +        unittest.FunctionTestCase(test, setUp, tearDown).run(result) +        self.assertEqual(events, expected) + +    # "Return a string identifying the specific test case." +    # +    # Because of the vague nature of the docs, I'm not going to lock this +    # test down too much. Really all that can be asserted is that the id() +    # will be a string (either 8-byte or unicode -- again, because the docs +    # just say "string") +    def test_id(self): +        test = unittest.FunctionTestCase(lambda: None) + +        self.assertIsInstance(test.id(), str) + +    # "Returns a one-line description of the test, or None if no description +    # has been provided. The default implementation of this method returns +    # the first line of the test method's docstring, if available, or None." +    def test_shortDescription__no_docstring(self): +        test = unittest.FunctionTestCase(lambda: None) + +        self.assertEqual(test.shortDescription(), None) + +    # "Returns a one-line description of the test, or None if no description +    # has been provided. The default implementation of this method returns +    # the first line of the test method's docstring, if available, or None." +    def test_shortDescription__singleline_docstring(self): +        desc = "this tests foo" +        test = unittest.FunctionTestCase(lambda: None, description=desc) + +        self.assertEqual(test.shortDescription(), "this tests foo") | 
