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