Releases: pytest-dev/pytest
5.2.1
5.2.0
pytest 5.2.0 (2019-09-28)
Deprecations
- #1682: Passing
arguments to pytest.fixture() as positional arguments is
deprecated - pass them as a keyword argument instead.
Features
- #1682: The
scopeparameter of@pytest.fixturecan now be a callable that
receives the fixture name and theconfigobject as keyword-only
parameters. See the
docs for
more information. - #5764: New
behavior of the--pastebinoption: failures to connect to the
pastebin server are reported, without failing the pytest run
Bug Fixes
- #5806: Fix
"lexer" being used when uploading to bpaste.net from--pastebin
to "text". - #5884: Fix
--setup-onlyand--setup-showfor custom pytest items.
Trivial/Internal Changes
- #5056: The
HelpFormatter usespy.io.get_terminal_widthfor better
width detection.
5.1.3
5.1.2
pytest 5.1.2 (2019-08-30)
Bug Fixes
- #2270: Fixed
selfreference in function-scoped fixtures defined plugin classes:
previouslyselfwould be a reference to a test class, not the
plugin class. - #570: Fixed long
standing issue where fixture scope was not respected when indirect
fixtures were used during parametrization. - #5782: Fix
decoding error when printing an error response from--pastebin. - #5786: Chained
exceptions in test and collection reports are now correctly
serialized, allowing plugins likepytest-xdistto display
them properly. - #5792: Windows:
Fix error that occurs in certain circumstances when loading
conftest.pyfrom a working directory that has casing other than
the one stored in the filesystem (e.g.,c:\testinstead of
C:\test).
5.1.1
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.).
4.6.5
Bug Fixes
-
#4344: Fix RuntimeError/StopIteration when trying to collect package with "init.py" only.
-
#5478: Fix encode error when using unicode strings in exceptions with
pytest.raises. -
#5524: Fix issue where
tmp_pathandtmpdirwould not remove directories containing files marked as read-only,
which could lead to pytest crashing when executed a second time with the--basetempoption. -
#5547:
--step-wisenow handlesxfail(strict=True)markers properly. -
#5650: Improved output when parsing an ini configuration file fails.
5.0.1
pytest 5.0.1 (2019-07-04)
Bug Fixes
- #5479: Improve
quoting inraisesmatch failure message. - #5523: Fixed
using multiple short options together in the command-line (for
example-vs) in Python 3.8+. - #5547:
--step-wisenow handlesxfail(strict=True)markers properly.
Improved Documentation
- #5517: Improve
"Declaring new hooks" section in chapter "Writing Plugins"