Hi all,

While working on a ticket that had to do with cookies, I found myself writing 
this code (essentially):

        with warnings.catch_warnings(record=True) as warnings_log:
            #
            # Begin actual code I'm trying to test
            #
            CsrfViewMiddleware().process_view(req, token_view, (), {})
            #
            # End actual code I'm trying to test
            #
        if (len(warnings_log) > 1 or 
                not issubclass(warnings_log[0].category, UnicodeWarning)):
            for warning in warnings_log:
                warnings.warn(warning)

The code I'm trying to test is going to make a UnicodeWarning, because the 
whole point of the test is to see how the code deals with broken user input. 
Having to wrap it in 5 lines of unrelated code feels odd.

So I thought a context manager to suppress specific warnings in a block might 
be generally useful, and for tests, it may be even useful to have an 
assertWarns -- an analog of assertRaises.

Opinions?

Thanks,
        Shai.

Reply via email to