Many pytest users would like a concise way to either suppress warnings, or convert them to errors [1]. The current best approach is:
withwarnings.catch_warnings():
warnings.simplefilter("ignore") # or "error"
but even this becomes tediously verbose when repeated in hundreds of tests (which I suspect is responsible for many misuses of pytest.raises()). Since these two functions take disjoint arguments [2], I propose allowing catch_warnings() to accept arguments for simplefilter() and forward them on:
withwarnings.catch_warnings("ignore"): # or "error"
I have a quick implementation at [3] which I can finish if the idea is acceptable. Although I don't have a concrete use-case for more than the 'action' and 'category' arguments, forwarding all rather than some makes the semantics very simple.
I'd emphasize again that this is very much a convenience-focussed change: I estimate that 95% of all uses will pass only action="error" or action="ignore". Supporting a concise and simple interface for this seems worth the small complication to the design of the warnings module.
Zac-HD mannequin commentedMar 21, 2022
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: