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.raisesandpytest.warnsno longer support strings as
the second argument.messageparameter ofpytest.raises.pytest.raises,pytest.warnsandParameterSet.paramnow 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.configglobal variable.tmpdir_factory.ensuretempmethod.pytest_logwarninghook.RemovedInPytest4Warningwarning type.requestis now a reserved name for fixtures.
For more information consult Deprecations and
Removals in
the docs. -
#5565: Removed
unused support code for
unittest2.The
unittest2backport 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 ifunittest2is 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.xfailandpytest.skipno 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
bytesto these functions. If you
do, please decode it to anstrbeforehand.
Features
- #5564: New
Config.invocation_argsattribute 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_configureare explicitly not treated as
errors, even if configured as such, because it otherwise completely
breaks pytest. - #5477: The XML
file produced by--junitxmlnow 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_pathandtmpdirwould not remove directories
containing files marked as read-only, which could lead to pytest
crashing when executed a second time with the--basetempoption. - #5537: Replace
importlib_metadatabackport withimportlib.metadatafrom 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.xfailinstead 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.exitis now correctly handled inunittestcases. This
makesunittestcases handlequitfrom pytest's pdb correctly. - #5650: Improved
output when parsing an ini configuration file fails. - #5701: Fix
collection ofstaticmethodobjects defined with
functools.partial. - #5734: Skip
async generator test functions, and update the warning message to
refer toasync deffunctions.
Improved Documentation
- #5669: Add
docstring forTestdir.copy_example.
Trivial/Internal Changes
- #5095: XML
files of thexunit2family 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 internalSafeReprclass and removed some dead code. - #5664: When
invoking pytest's own testsuite withPYTHONDONTWRITEBYTECODE=1,
thetest_xfail_handlingtest no longer fails. - #5684: Replace
manual handling ofOSError.errnoin the codebase by newOSError
subclasses (PermissionError,FileNotFoundError, etc.).