Releases: pytest-dev/pytest
4.6.9
4.6.8
pytest 4.6.8 (2019-12-19)
Features
- #5471: JUnit
XML now includes a timestamp and hostname in the testsuite tag.
Bug Fixes
- #5430:
junitxml: Logs for failed test are now passed to junit report in
case the test fails during call phase.
Trivial/Internal Changes
- #6345: Pin
coloramato0.4.1only for Python 3.4 so newer Python versions
can still receive colorama updates.
5.3.2
pytest 5.3.2 (2019-12-13)
Improvements
-
#4639: Revert
"A warning is now issued when assertions are made forNone".The warning proved to be less useful than initially expected and had
quite a few false positive cases.
Bug Fixes
- #5430:
junitxml: Logs for failed test are now passed to junit report in
case the test fails during call phase. - #6290: The
supporting files in the.pytest_cachedirectory are kept with
--cache-clear, which only clears cached values now. - #6301: Fix
assertion rewriting for egg-based distributions andeditable
installs (pip install --editable).
4.6.7
pytest 4.6.7 (2019-12-05)
Bug Fixes
- #5477: The XML
file produced by--junitxmlnow correctly contain a<testsuites>
root element. - #6044: Properly
ignoreFileNotFoundError(OSError.errno == NOENTin Python 2)
exceptions when trying to remove old temporary directories, for
instance when multiple processes try to remove the same directory
(common withpytest-xdistfor example).
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_linewhen used after positive matching. - #6082: Fix line detection for doctest samples inside
propertydocstrings, 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_typeandsys.last_valueattributes 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_familyoption will change toxunit2in
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--junitxmloption is given in the command line but
junit_familyis 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=FILEoption 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
--resultlogoption, which is
deprecated and meant to be removed in a future release. If you use
--resultlog, please try outpytest-reportlogand
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
.pycfiles 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_indentand support for per-entry configuration of
indentation behavior on calls tologging.log().Alters the default for auto-indention from
ontooff. 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:
pytesterlearned 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 NoneOr the
inoperator: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_addoptionso 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 indoctestitems. -
#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.argsis now always atupleto better
convey that it should be immutable and avoid
accidental modifications. -
#6023:
pytest.mainnow returns apytest.ExitCodeinstance 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.spawndoes 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
--coas a synonym to--collect-only. -
#6148:
atomicwritesis 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.setrobustness and performance.
Bug Fixes
-
#2049: Fixed
--setup-planshowing inaccurate information about
fixture lifetimes. -
#2548: Fixed
line offset mismatch of skipped tests in terminal summary. -
#6039: The
PytestDoctestRunneris 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.Exceptionetc. -
#6074:
pytester: fixed order of arguments inrm_rfwarning when cleaning
up temporary directories, and do not emit warnings for errors with
os.open. -
#6189: Fixed
result ofgetmodpathmethod.
Trivial/Internal Changes
- #4901:
RunResultfrompytesternow displays the mnemonic of theret
attribute when it is a validpytest.ExitCodevalue.
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
--nfto not forget about known nodeids with partial
test selection. - #5906: Fix
crash withKeyboardInterruptduring--setup-show. - #5946: Fixed
issue when parametrizing fixtures with numpy arrays (and possibly
other sequence-like types). - #6044: Properly
ignoreFileNotFoundErrorexceptions when trying to remove old
temporary directories, for instance when multiple processes try to
remove the same directory (common withpytest-xdistfor 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_metadatabackport withimportlib.metadatafrom 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 deprecatedcmpattribute inattrs>=19.2.
Trivial/Internal Changes
- #5801: Fixes
python version checks (detected byflake8-2020) in case python4
becomes a thing.