How can I test 'warnings' from testsuite?

billiejoex gnewsg at gmail.com
Mon Sep 10 11:38:27 EDT 2007


On 10 Set, 17:15, "attn.steven.... at gmail.com"
<attn.steven.... at gmail.com> wrote:
> On Sep 10, 7:08 am, billiejoex <gne... at gmail.com> wrote:
>
> > Hi there,
> > into a module of mine I 'warn' a message if a certain situation
> > occurs:
>
> > def add_anonymous_user(permissions=('r'):
> >       if 'w' in p:
> >           import warnings
> >           warnings.warn("it's not rencommended assigning 'w'
> > permission to anonymous user.", RuntimeWarning, stacklevel=2)
>
> > I'd like to test such event from test suite ("fail test if warn is not
> > raised") but don't know how.
>
> > Any suggestion?
>
> You can (temporarily) change warnings to exceptions
> for the purposes of testing; see filterwarnings in
> the warnings module.  E.g.,
>
> import warnings
> import unittest
>
> def foo():
>     warnings.warn("Foo", RuntimeWarning, stacklevel=2)
>
> class testWarn(unittest.TestCase):
>     def setUp(self):
>         warnings.filterwarnings("error")
>     def test_1(self):
>         self.assertRaises(RuntimeWarning, foo)
>     def tearDown(self):
>         warnings.resetwarnings()
>
> s = unittest.TestSuite()
> s.addTest(unittest.makeSuite(testWarn))
>
> if __name__ == '__main__':
>     import sys
>     sys.argv.append('-v')
>     unittest.TextTestRunner(verbosity=2).run(s)
>
> --
> Hope this helps,
> Steven

This is exactly what I was searching for.
Thank you very much.




More information about the Python-list mailing list