12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- # helper module for test_runner.Test_TextTestRunner.test_warnings
- """
- This module has a number of tests that raise different kinds of warnings.
- When the tests are run, the warnings are caught and their messages are printed
- to stdout. This module also accepts an arg that is then passed to
- unittest.main to affect the behavior of warnings.
- Test_TextTestRunner.test_warnings executes this script with different
- combinations of warnings args and -W flags and check that the output is correct.
- See #10535.
- """
- import sys
- import unittest
- import warnings
- def warnfun():
- warnings.warn('rw', RuntimeWarning)
- class TestWarnings(unittest.TestCase):
- # unittest warnings will be printed at most once per type (max one message
- # for the fail* methods, and one for the assert* methods)
- def test_assert(self):
- self.assertEquals(2+2, 4)
- self.assertEquals(2*2, 4)
- self.assertEquals(2**2, 4)
- def test_fail(self):
- self.failUnless(1)
- self.failUnless(True)
- def test_other_unittest(self):
- self.assertAlmostEqual(2+2, 4)
- self.assertNotAlmostEqual(4+4, 2)
- # these warnings are normally silenced, but they are printed in unittest
- def test_deprecation(self):
- warnings.warn('dw', DeprecationWarning)
- warnings.warn('dw', DeprecationWarning)
- warnings.warn('dw', DeprecationWarning)
- def test_import(self):
- warnings.warn('iw', ImportWarning)
- warnings.warn('iw', ImportWarning)
- warnings.warn('iw', ImportWarning)
- # user warnings should always be printed
- def test_warning(self):
- warnings.warn('uw')
- warnings.warn('uw')
- warnings.warn('uw')
- # these warnings come from the same place; they will be printed
- # only once by default or three times if the 'always' filter is used
- def test_function(self):
- warnfun()
- warnfun()
- warnfun()
- if __name__ == '__main__':
- with warnings.catch_warnings(record=True) as ws:
- # if an arg is provided pass it to unittest.main as 'warnings'
- if len(sys.argv) == 2:
- unittest.main(exit=False, warnings=sys.argv.pop())
- else:
- unittest.main(exit=False)
- # print all the warning messages collected
- for w in ws:
- print(w.message)
|