|
| 1 | +README FOR IDLE TESTS IN IDLELIB.IDLE_TEST |
| 2 | + |
| 3 | +The idle directory, idlelib, has over 60 xyz.py files. The idle_test |
| 4 | +subdirectory should contain a test_xyy.py for each one. (For test modules, |
| 5 | +make 'xyz' lower case.) Each should start with the following cut-paste |
| 6 | +template, with the blanks after after '.'. 'as', and '_' filled in. |
| 7 | +--- |
| 8 | +import unittest |
| 9 | +import idlelib. as |
| 10 | + |
| 11 | +class Test_(unittest.TestCase): |
| 12 | + |
| 13 | + def test_(self): |
| 14 | + |
| 15 | +if __name__ == '__main__': |
| 16 | + unittest.main(verbosity=2, exit=2) |
| 17 | +--- |
| 18 | +Idle tests are run with unittest; do not use regrtest's test_main. |
| 19 | + |
| 20 | +Once test_xyy is written, the following should go at the end of xyy.py, |
| 21 | +with xyz (lowercased) added after 'test_'. |
| 22 | +--- |
| 23 | +if __name__ == "__main__": |
| 24 | + import unittest |
| 25 | + unittest.main('idlelib.idle_test.test_', verbosity=2, exit=False) |
| 26 | +--- |
| 27 | + |
| 28 | +In Idle, pressing F5 in an editor window with either xyz.py or test_xyz.py |
| 29 | +loaded will then run the test with the version of Python running Idle and |
| 30 | +tracebacks will appear in the Shell window. The options are appropriate for |
| 31 | +developers running (as opposed to importing) either type of file during |
| 32 | +development: verbosity=2 lists all test_y methods; exit=False avoids a |
| 33 | +spurious sys.exit traceback when running in Idle. The following command |
| 34 | +lines also run test_xyz.py |
| 35 | + |
| 36 | +python -m idlelib.xyz # With the capitalization of the xyz module |
| 37 | +python -m unittest -v idlelib.idle_test.test_xyz |
| 38 | + |
| 39 | +To run all idle tests either interactively ('>>>', with unittest imported) |
| 40 | +or from a command line, use one of the following. |
| 41 | + |
| 42 | +>>> unittest.main('idlelib.idle_test', verbosity=2, exit=False) |
| 43 | +python -m unittest -v idlelib.idle_test |
| 44 | +python -m test.test_idle |
| 45 | +python -m test test_idle |
| 46 | + |
| 47 | +The idle tests are 'discovered' in idlelib.idle_test.__init__.load_tests, |
| 48 | +which is also imported into test.test_idle. Normally, neither file should be |
| 49 | +changed when working on individual test modules. The last command runs runs |
| 50 | +unittest indirectly through regrtest. The same happens when the entire test |
| 51 | +suite is run with 'python -m test'. So it must work for buildbots to stay green. |
| 52 | + |
| 53 | +To run an individual Testcase or test method, extend the |
| 54 | +dotted name given to unittest on the command line. |
| 55 | + |
| 56 | +python -m unittest -v idlelib.idle_test.text_xyz.Test_case.test_meth |
| 57 | + |
| 58 | +To disable test/test_idle.py, there are at least two choices. |
| 59 | +a. Comment out 'load_tests' line, no no tests are discovered (simple and safe); |
| 60 | +Running no tests passes, so there is no indication that nothing was run. |
| 61 | +b.Before that line, make module an unexpected skip for regrtest with |
| 62 | +import unittest; raise unittest.SkipTest('skip for buildbots') |
| 63 | +When run directly with unittest, this causes a normal exit and traceback. |
0 commit comments