mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| Python unit testing framework, based on Erich Gamma's JUnit and Kent Beck's
 | |
| Smalltalk testing framework (used with permission).
 | |
| 
 | |
| This module contains the core framework classes that form the basis of
 | |
| specific test cases and suites (TestCase, TestSuite etc.), and also a
 | |
| text-based utility class for running the tests and reporting the results
 | |
|  (TextTestRunner).
 | |
| 
 | |
| Simple usage:
 | |
| 
 | |
|     import unittest
 | |
| 
 | |
|     class IntegerArithmeticTestCase(unittest.TestCase):
 | |
|         def testAdd(self):  # test method names begin with 'test'
 | |
|             self.assertEqual((1 + 2), 3)
 | |
|             self.assertEqual(0 + 1, 1)
 | |
|         def testMultiply(self):
 | |
|             self.assertEqual((0 * 10), 0)
 | |
|             self.assertEqual((5 * 8), 40)
 | |
| 
 | |
|     if __name__ == '__main__':
 | |
|         unittest.main()
 | |
| 
 | |
| Further information is available in the bundled documentation, and from
 | |
| 
 | |
|   http://docs.python.org/library/unittest.html
 | |
| 
 | |
| Copyright (c) 1999-2003 Steve Purcell
 | |
| Copyright (c) 2003-2010 Python Software Foundation
 | |
| This module is free software, and you may redistribute it and/or modify
 | |
| it under the same terms as Python itself, so long as this copyright message
 | |
| and disclaimer are retained in their original form.
 | |
| 
 | |
| IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
 | |
| SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
 | |
| THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 | |
| DAMAGE.
 | |
| 
 | |
| THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
 | |
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 | |
| PARTICULAR PURPOSE.  THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
 | |
| AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 | |
| SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 | |
| """
 | |
| 
 | |
| __all__ = ['TestResult', 'TestCase', 'IsolatedAsyncioTestCase', 'TestSuite',
 | |
|            'TextTestRunner', 'TestLoader', 'FunctionTestCase', 'main',
 | |
|            'defaultTestLoader', 'SkipTest', 'skip', 'skipIf', 'skipUnless',
 | |
|            'expectedFailure', 'TextTestResult', 'installHandler',
 | |
|            'registerResult', 'removeResult', 'removeHandler',
 | |
|            'addModuleCleanup']
 | |
| 
 | |
| # Expose obsolete functions for backwards compatibility
 | |
| # bpo-5846: Deprecated in Python 3.11, scheduled for removal in Python 3.13.
 | |
| __all__.extend(['getTestCaseNames', 'makeSuite', 'findTestCases'])
 | |
| 
 | |
| __unittest = True
 | |
| 
 | |
| from .result import TestResult
 | |
| from .case import (addModuleCleanup, TestCase, FunctionTestCase, SkipTest, skip,
 | |
|                    skipIf, skipUnless, expectedFailure)
 | |
| from .suite import BaseTestSuite, TestSuite
 | |
| from .loader import TestLoader, defaultTestLoader
 | |
| from .main import TestProgram, main
 | |
| from .runner import TextTestRunner, TextTestResult
 | |
| from .signals import installHandler, registerResult, removeResult, removeHandler
 | |
| # IsolatedAsyncioTestCase will be imported lazily.
 | |
| from .loader import makeSuite, getTestCaseNames, findTestCases
 | |
| 
 | |
| # deprecated
 | |
| _TextTestResult = TextTestResult
 | |
| 
 | |
| 
 | |
| # There are no tests here, so don't try to run anything discovered from
 | |
| # introspecting the symbols (e.g. FunctionTestCase). Instead, all our
 | |
| # tests come from within unittest.test.
 | |
| def load_tests(loader, tests, pattern):
 | |
|     import os.path
 | |
|     # top level directory cached on loader instance
 | |
|     this_dir = os.path.dirname(__file__)
 | |
|     return loader.discover(start_dir=this_dir, pattern=pattern)
 | |
| 
 | |
| 
 | |
| # Lazy import of IsolatedAsyncioTestCase from .async_case
 | |
| # It imports asyncio, which is relatively heavy, but most tests
 | |
| # do not need it.
 | |
| 
 | |
| def __dir__():
 | |
|     return globals().keys() | {'IsolatedAsyncioTestCase'}
 | |
| 
 | |
| def __getattr__(name):
 | |
|     if name == 'IsolatedAsyncioTestCase':
 | |
|         global IsolatedAsyncioTestCase
 | |
|         from .async_case import IsolatedAsyncioTestCase
 | |
|         return IsolatedAsyncioTestCase
 | |
|     raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
 | 
