5.1.0
pytest 5.1.0 (2019-08-15)
Removals
-
#5180: As per
our policy, the following features have been deprecated in the 4.X
series and are now removed:Request.getfuncargvalue
: useRequest.getfixturevalue
instead.pytest.raises
andpytest.warns
no longer support strings as
the second argument.message
parameter ofpytest.raises
.pytest.raises
,pytest.warns
andParameterSet.param
now use
native keyword-only syntax. This might change the exception
message from previous versions, but they still raiseTypeError
on unknown keyword arguments as before.pytest.config
global variable.tmpdir_factory.ensuretemp
method.pytest_logwarning
hook.RemovedInPytest4Warning
warning type.request
is now a reserved name for fixtures.
For more information consult Deprecations and
Removals in
the docs. -
#5565: Removed
unused support code for
unittest2.The
unittest2
backport module is no longer necessary since Python
3.3+, and the small amount of code in pytest to support it also
doesn't seem to be used: after removed, all tests still pass
unchanged.Although our policy is to introduce a deprecation period before
removing any features or support for third party libraries, because
this code is apparently not used at all (even ifunittest2
is used
by a test suite executed by pytest), it was decided to remove it in
this release.If you experience a regression because of this, please file an
issue. -
#5615:
pytest.fail
,pytest.xfail
andpytest.skip
no longer support
bytes for the message argument.This was supported for Python 2 where it was tempting to use
"message"
instead ofu"message"
.Python 3 code is unlikely to pass
bytes
to these functions. If you
do, please decode it to anstr
beforehand.
Features
- #5564: New
Config.invocation_args
attribute containing the unchanged
arguments passed topytest.main()
. - #5576: New
NUMBER
option for doctests to ignore irrelevant differences in
floating-point numbers. Inspired by Sébastien Boisgérault's
numtest extension for
doctest.
Improvements
-
#5471: JUnit
XML now includes a timestamp and hostname in the testsuite tag. -
#5707: Time
taken to run the test suite now includes a human-readable
representation when it takes over 60 seconds, for example:===== 2 failed in 102.70s (0:01:42) =====
Bug Fixes
- #4344: Fix
RuntimeError/StopIteration when trying to collect package with
"__init__.py" only. - #5115: Warnings
issued duringpytest_configure
are explicitly not treated as
errors, even if configured as such, because it otherwise completely
breaks pytest. - #5477: The XML
file produced by--junitxml
now correctly contain a<testsuites>
root element. - #5523: Fixed
using multiple short options together in the command-line (for
example-vs
) in Python 3.8+. - #5524: Fix
issue wheretmp_path
andtmpdir
would not remove directories
containing files marked as read-only, which could lead to pytest
crashing when executed a second time with the--basetemp
option. - #5537: Replace
importlib_metadata
backport withimportlib.metadata
from the
standard library on Python 3.8+. - #5578: Improve
type checking for some exception-raising functions (pytest.xfail
,
pytest.skip
, etc) so they provide better error messages when users
meant to use marks (for example@pytest.xfail
instead of
@pytest.mark.xfail
). - #5606: Fixed
internal error when test functions were patched with objects that
cannot be compared for truth values against others, likenumpy
arrays. - #5634:
pytest.exit
is now correctly handled inunittest
cases. This
makesunittest
cases handlequit
from pytest's pdb correctly. - #5650: Improved
output when parsing an ini configuration file fails. - #5701: Fix
collection ofstaticmethod
objects defined with
functools.partial
. - #5734: Skip
async generator test functions, and update the warning message to
refer toasync def
functions.
Improved Documentation
- #5669: Add
docstring forTestdir.copy_example
.
Trivial/Internal Changes
- #5095: XML
files of thexunit2
family are now validated against the schema by
pytest's own test suite to avoid future regressions. - #5516: Cache
node splitting function which can improve collection performance in
very large test suites. - #5603:
Simplified internalSafeRepr
class and removed some dead code. - #5664: When
invoking pytest's own testsuite withPYTHONDONTWRITEBYTECODE=1
,
thetest_xfail_handling
test no longer fails. - #5684: Replace
manual handling ofOSError.errno
in the codebase by newOSError
subclasses (PermissionError
,FileNotFoundError
, etc.).