How can I test 'warnings' from testsuite?
attn.steven.kuo at gmail.com
attn.steven.kuo at gmail.com
Mon Sep 10 11:15:19 EDT 2007
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
More information about the Python-list
mailing list