helper module for testrunner testtexttestrunner testwarnings 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 testtexttestrunner testwarnings executes this script with different combinations of warnings args and w flags and check that the output is correct see 10535 these warnings are normally silenced but they are printed in unittest user warnings should always be printed these warnings come from the same place they will be printed only once by default or three times if the always filter is used if an arg is provided pass it to unittest main as warnings print all the warning messages collected 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 these warnings are normally silenced but they are printed in unittest user warnings should always be printed these warnings come from the same place they will be printed only once by default or three times if the always filter is used if an arg is provided pass it to unittest main as warnings print all the warning messages collected
import sys
import unittest
import warnings

def warnfun():
    warnings.warn('rw', RuntimeWarning)

class TestWarnings(unittest.TestCase):
    def test_other_unittest(self):
        self.assertAlmostEqual(2+2, 4)
        self.assertNotAlmostEqual(4+4, 2)

    
    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)

    
    def test_warning(self):
        warnings.warn('uw')
        warnings.warn('uw')
        warnings.warn('uw')

    
    
    def test_function(self):

        warnfun()
        warnfun()
        warnfun()



if __name__ == '__main__':
    with warnings.catch_warnings(record=True) as ws:
        
        if len(sys.argv) == 2:
            unittest.main(exit=False, warnings=sys.argv.pop())
        else:
            unittest.main(exit=False)

    
    for w in ws:
        print(w.message)