return the number of tests represented by the this test object for testcase instances this will always be 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 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 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 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 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 8byte or unicode again because the docs just say string returns a oneline 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 returns a oneline 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 return the number of tests represented by the this test object for testcase instances this will always be 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 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 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 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 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 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 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
import unittest

from test.test_unittest.support import LoggingResult


class Test_FunctionTestCase(unittest.TestCase):

    
    
    def test_countTestCases(self):
        test = unittest.FunctionTestCase(lambda: None)

        self.assertEqual(test.countTestCases(), 1)

    
    
    
    
    
    
    
    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)

    
    
    
    
    
    
    
    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)

    
    
    
    
    
    
    
    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)

    
    
    
    
    
    
    
    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)

    
    
    
    
    
    
    def test_id(self):
        test = unittest.FunctionTestCase(lambda: None)

        self.assertIsInstance(test.id(), str)

    
    
    
    def test_shortDescription__no_docstring(self):
        test = unittest.FunctionTestCase(lambda: None)

        self.assertEqual(test.shortDescription(), 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")


if __name__ == "__main__":
    unittest.main()