Releases: pytest-dev/pytest
5.3.1
pytest 5.3.1 (2019-11-25)
Improvements
- #6231: Improve check for misspelling of
pytest.mark.parametrize
. - #6257: Handle exit.Exception raised in notify_exception (via pytest_internalerror), e.g. when quitting pdb from post mortem.
Bug Fixes
- #5914: pytester: fix
no_fnmatch_line
when used after positive matching. - #6082: Fix line detection for doctest samples inside
property
docstrings, as a workaround to bpo-17446. - #6254: Fix compatibility with pytest-parallel (regression in pytest 5.3.0).
- #6255: Clear the
sys.last_traceback
,sys.last_type
andsys.last_value
attributes by deleting them instead of setting them toNone
. This better matches the behaviour of the Python standard library.
5.3.0
pytest 5.3.0 (2019-11-19)
Deprecations
-
#6179: The
default value ofjunit_family
option will change toxunit2
in
pytest 6.0, given that this is the version supported by default in
modern tools that manipulate this type of file.In order to smooth the transition, pytest will issue a warning in
case the--junitxml
option is given in the command line but
junit_family
is not explicitly configured inpytest.ini
.For more information, see the
docs.
Features
-
#4488: The
pytest team has created the
pytest-reportlog
plugin, which provides a new--report-log=FILE
option that writes
report logs into a file as the test session executes.Each line of the report log contains a self contained JSON object
corresponding to a testing event, such as a collection or a test
result report. The file is guaranteed to be flushed after writing
each line, so systems can read and process events in real-time.The plugin is meant to replace the
--resultlog
option, which is
deprecated and meant to be removed in a future release. If you use
--resultlog
, please try outpytest-reportlog
and
provide feedback. -
#4730: When
sys.pycache_prefix
(Python 3.8+) is set, it will be used by pytest
to cache test files changed by the assertion rewriting mechanism.This makes it easier to benefit of cached
.pyc
files even on file
systems without permissions. -
#5515: Allow
selective auto-indentation of multiline log messages.Adds command line option
--log-auto-indent
, config option
log_auto_indent
and support for per-entry configuration of
indentation behavior on calls tologging.log()
.Alters the default for auto-indention from
on
tooff
. This
restores the older behavior that existed prior to v4.6.0. This
reversion to earlier behavior was done because it is better to
activate new features that may lead to broken tests explicitly
rather than implicitly. -
#5914:
pytester
learned two new functions,
no_fnmatch_line
and
no_re_match_line.The functions are used to ensure the captured text does not match
the given pattern.The previous idiom was to use
re.match
:assert re.match(pat, result.stdout.str()) is None
Or the
in
operator:assert text in result.stdout.str()
But the new functions produce best output on failure.
-
#6057: Added
tolerances to complex values when printingpytest.approx
.For example,
repr(pytest.approx(3+4j))
returns
(3+4j) ± 5e-06 ∠ ±180°
. This is polar notation indicating a circle
around the expected value, with a radius of 5e-06. Forapprox
comparisons to returnTrue
, the actual value should fall within
this circle. -
#6061: Added
the pluginmanager as an argument topytest_addoption
so that hooks
can be invoked when setting up command line options. This is useful
for having one plugin communicate things to another plugin, such as
default values or which set of command line options to add.
Improvements
-
#5061: Use
multiple colors with terminal summary statistics. -
#5630: Quitting
from debuggers is now properly handled indoctest
items. -
#5924: Improved
verbose diff output with sequences.Before:
E AssertionError: assert ['version', '...version_info'] == ['version', '...version', ...] E Right contains 3 more items, first extra item: ' ' E Full diff: E - ['version', 'version_info', 'sys.version', 'sys.version_info'] E + ['version', E + 'version_info', E + 'sys.version', E + 'sys.version_info', E + ' ', E + 'sys.version', E + 'sys.version_info']
After:
E AssertionError: assert ['version', '...version_info'] == ['version', '...version', ...] E Right contains 3 more items, first extra item: ' ' E Full diff: E [ E 'version', E 'version_info', E 'sys.version', E 'sys.version_info', E + ' ', E + 'sys.version', E + 'sys.version_info', E ]
-
#5936: Display
untruncated assertion message with-vv
. -
#5990: Fixed
plurality mismatch in test summary (e.g. display "1 error" instead
of "1 errors"). -
#6008:
Config.InvocationParams.args
is now always atuple
to better
convey that it should be immutable and avoid
accidental modifications. -
#6023:
pytest.main
now returns apytest.ExitCode
instance now, except
for when custom exit codes are used (where it returnsint
then still). -
#6026: Align
prefixes in output of pytester'sLineMatcher
. -
#6059:
Collection errors are reported as errors (and not failures
like before) in the terminal's short test summary. -
#6069:
pytester.spawn
does not skip/xfail tests on FreeBSD
anymore unconditionally. -
#6097: The
"[XXX%]" indicator in the test summary is now colored according to
the final (new) multi-colored line's main color. -
#6116: Added
--co
as a synonym to--collect-only
. -
#6148:
atomicwrites
is now only used on Windows, fixing a performance
regression with assertion rewriting on Unix. -
#6152: Now
parametrization will use the__name__
attribute of any object for
the id, if present. Previously it would only use__name__
for
functions and classes. -
#6176: Improved
failure reporting with pytester'sHookrecorder.assertoutcome
. -
#6181: The
reason for a stopped session, e.g. with--maxfail
/-x
, now gets
reported in the test summary. -
#6206: Improved
cache.set
robustness and performance.
Bug Fixes
-
#2049: Fixed
--setup-plan
showing inaccurate information about
fixture lifetimes. -
#2548: Fixed
line offset mismatch of skipped tests in terminal summary. -
#6039: The
PytestDoctestRunner
is now properly invalidated when unconfiguring
the doctest plugin.This is important when used with
pytester
'srunpytest_inprocess
. -
#6047:
BaseExceptions are now handled insaferepr
, which includes
pytest.fail.Exception
etc. -
#6074:
pytester: fixed order of arguments inrm_rf
warning when cleaning
up temporary directories, and do not emit warnings for errors with
os.open
. -
#6189: Fixed
result ofgetmodpath
method.
Trivial/Internal Changes
- #4901:
RunResult
frompytester
now displays the mnemonic of theret
attribute when it is a validpytest.ExitCode
value.
5.2.4
5.2.3
pytest 5.2.3 (2019-11-14)
Bug Fixes
5.2.2
pytest 5.2.2 (2019-10-24)
Bug Fixes
- #5206: Fix
--nf
to not forget about known nodeids with partial
test selection. - #5906: Fix
crash withKeyboardInterrupt
during--setup-show
. - #5946: Fixed
issue when parametrizing fixtures with numpy arrays (and possibly
other sequence-like types). - #6044: Properly
ignoreFileNotFoundError
exceptions when trying to remove old
temporary directories, for instance when multiple processes try to
remove the same directory (common withpytest-xdist
for example).
4.6.6
pytest 4.6.6 (2019-10-11)
Bug Fixes
- #5523: Fixed
using multiple short options together in the command-line (for
example-vs
) in Python 3.8+. - #5537: Replace
importlib_metadata
backport withimportlib.metadata
from the
standard library on Python 3.8+. - #5806: Fix
"lexer" being used when uploading to bpaste.net from--pastebin
to "text". - #5902: Fix
warnings about deprecatedcmp
attribute inattrs>=19.2
.
Trivial/Internal Changes
- #5801: Fixes
python version checks (detected byflake8-2020
) in case python4
becomes a thing.
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
scope
parameter of@pytest.fixture
can now be a callable that
receives the fixture name and theconfig
object as keyword-only
parameters. See the
docs for
more information. - #5764: New
behavior of the--pastebin
option: 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-only
and--setup-show
for custom pytest items.
Trivial/Internal Changes
- #5056: The
HelpFormatter usespy.io.get_terminal_width
for better
width detection.
5.1.3
5.1.2
pytest 5.1.2 (2019-08-30)
Bug Fixes
- #2270: Fixed
self
reference in function-scoped fixtures defined plugin classes:
previouslyself
would 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-xdist
to display
them properly. - #5792: Windows:
Fix error that occurs in certain circumstances when loading
conftest.py
from a working directory that has casing other than
the one stored in the filesystem (e.g.,c:\test
instead of
C:\test
).