deprecate non-cm raises,warns&deprecated call + add paramspec by jakkdl · Pull Request #13241 · pytest-dev/pytest (original) (raw)
deprecation
Deprecates the legacy callable forms for pytest.raises
, pytest.warns
and pytest.deprecated_call
, and replaces all instances in the code base of them aside from code specifically for testing them.
paramspec
pytest.raises
, warns
& deprecated_call
previously typed *args
and **kwargs
as Any
in the legacy callable form, so this did not raise errors:
def foo(x: int) -> None: raise ValueError raises(ValueError, foo, None)
but now it will give call-overload
.
It also makes it possible to pass func
as a kwarg, which the type hints previously showed as possible, but it didn't work.
It's possible that func
(and the expected type?) should be pos-only, as this looks quite weird:
raises(1, 2, kwarg1=3, func=my_func, kwarg2=4, expected_exception=ValueError)
but if somebody is dynamically generating parameters to send to raises
then we probably shouldn't ban it needlessly; and we can't make func
pos-only without making expected_exception
pos-only, and that could break backwards compatibility.
- Include documentation when adding new features.
- Include new tests or update existing tests when applicable.
- Allow maintainers to push and squash when merging my commits. Please uncheck this if you prefer to squash the commits yourself.
- Create a new changelog file in the
changelog
folder, with a name like<ISSUE NUMBER>.<TYPE>.rst
. See changelog/README.rst for details.
Noticed while working on #13192