Changelog¶
Versions follow Semantic Versioning (<major>.<minor>.<patch>
).
Backward incompatible (breaking) changes will only be introduced in major versions with advance notice in the Deprecations section of releases.
Changelog draft for the next release¶
pytest 0.1.dev54+gd283425 (2020-03-09)¶
Breaking Changes¶
#6316: Matching of
-k EXPRESSION
to test names is now case-insensitive.#6443: Plugins specified with
-p
are now loaded after internal plugins, which results in their hooks being called before the internal ones.This makes the
-p
behavior consistent withPYTEST_PLUGINS
.#6637: Removed the long-deprecated
pytest_itemstart
hook.This hook has been marked as deprecated and not been even called by pytest for over 10 years now.
#6673: Reversed / fix meaning of “+/-” in error diffs. “-” means that sth. expected is missing in the result and “+” means that there are unexpected extras in the result.
#6737: The
cached_result
attribute ofFixtureDef
is now set toNone
when the result is unavailable, instead of being deleted.If your plugin performs checks like
hasattr(fixturedef, 'cached_result')
, for example in apytest_fixture_post_finalizer
hook implementation, replace it withfixturedef.cached_result is not None
. If youdel
the attribute, set it toNone
instead.
Deprecations¶
#3238: Option
--no-print-logs
is deprecated and meant to be removed in a future release. If you use--no-print-logs
, please try out--show-capture
and provide feedback.--show-capture
command-line option was added inpytest 3.5.0
and allows to specify how to display captured output when tests fail:no
,stdout
,stderr
,log
orall
(the default).#5975: Deprecate using direct constructors for
Nodes
.Instead they are new constructed via
Node.from_parent
.This transitional mechanism enables us to detangle the very intensely entangled
Node
relationships by enforcing more controlled creation/configruation patterns.As part of that session/config are already disallowed parameters and as we work on the details we might need disallow a few more as well.
Subclasses are expected to use
super().from_parent
if they intend to expand the creation ofNodes
.
Features¶
#4597: New –capture=tee-sys option to allow both live printing and capturing of test output.
#5712: Now all arguments to
@pytest.mark.parametrize
need to be explicitly declared in the function signature or viaindirect
. Previously it was possible to omit an argument if a fixture with the same name existed, which was just an accident of implementation and was not meant to be a part of the API.#6454: Changed default for
-r
tofE
, which displays failures and errors in the short test summary.-rN
can be used to disable it (the old behavior).#6469: New options have been added to the
junit_logging
option:log
,out-err
, andall
.
Improvements¶
#1857:
pytest.mark.parametrize
accepts integers forids
again, converting it to strings.#449: Use “yellow” main color with any XPASSED tests.
#4639: Revert “A warning is now issued when assertions are made for
None
”.The warning proved to be less useful than initially expected and had quite a few false positive cases.
#5283: Display full crash information in short test summaries on non-tty (e.g. CI).
#5686:
tmpdir_factory.mktemp
now fails when given absolute and non-normalized paths.#5984: The
pytest_warning_captured
hook now receives alocation
parameter with the code location that generated the warning.#6181: The reason for a stopped session, e.g. with
--maxfail
/-x
, now gets reported in the test summary stats line.#6213: pytester: the
testdir
fixture respects environment settings from themonkeypatch
fixture for inner runs.#6232: Display traceback / error location with errors from
--strict-markers
.#6247:
--fulltrace
is honored with collection errors.#6384: Make
--showlocals
work also with--tb=short
.#6653: Add support for matching lines consecutively with
LineMatcher
’sfnmatch_lines()
andre_match_lines()
.#6658: Code is now highlighted in tracebacks when
pygments
is installed.Users are encouraged to install
pygments
into their environment and provide feedback, because the plan is to makepygments
a regular dependency in the future.#6795: Import usage error message with invalid
-o
option.#759:
pytest.mark.parametrize
supports iterators and generators forids
.
Bug Fixes¶
#310: Add support for calling
pytest.xfail()
andpytest.importorskip()
with doctests.#3823:
--trace
now works with unittests.#4445: Fixed some warning reports produced by pytest to point to the correct location of the warning in the user’s code.
#5228: Fix
pdb.set_trace
wrapper when used in child threads after main thread exited.#5301: Fix
--last-failed
to collect new tests from files with known failures.#5928: Report
PytestUnknownMarkWarning
at the level of the user’s code, notpytest
’s.#5991: Fix interaction with
--pdb
and unittests: do not use unittest’sTestCase.debug()
.#6334: Fix summary entries appearing twice when
f/F
ands/S
report chars were used at the same time in the-r
command-line option (for example-rFf
).The upper case variants were never documented and the preferred form should be the lower case.
#6409: Fallback to green (instead of yellow) for non-last items without previous passes with colored terminal progress indicator.
#6454:
--disable-warnings
is honored with-ra
and-rA
.#6497: Fix bug in the comparison of request key with cached key in fixture.
A construct
if key == cached_key:
can fail either because==
is explicitly disallowed, or for, e.g., NumPy arrays, where the result ofa == b
cannot generally be converted tobool
. The implemented fix replaces==
withis
.#6557: Make capture output streams
.write()
method return the same return value from original streams.#6566: Fix
EncodedFile.writelines
to call the underlying buffer’swritelines
method.#6575: Fix internal crash when
faulthandler
starts initialized (for example withPYTHONFAULTHANDLER=1
environment variable set) andfaulthandler_timeout
defined in the configuration file.#6597: Fix node ids which contain a parametrized empty-string variable.
#6646: Assertion rewriting hooks are (re)stored for the current item, which fixes them being still used after e.g. pytester’s
testdir.runpytest
etc.#6660:
pytest.exit()
is handled when emitted from thepytest_sessionfinish
hook. This includes quitting from a debugger.#6701: Node ids for paths outside of the rootdir are generated properly, e.g. for
pytest testing --rootdir=/tmp -vv
.#6752: When
pytest.raises()
is used as a function (as opposed to a context manager), amatch
keyword argument is now passed through to the tested function. Previously it was swallowed and ignored (regression in pytest 5.1.0).#6801: Do not display empty lines inbetween traceback for unexpected exceptions with doctests.
Improved Documentation¶
#6696: Add list of fixtures to start of fixture chapter.
#6742: Expand first sentence on fixtures into a paragraph.
#6877: Improve Creating a pull request in
CONTRIBUTING.rst
Started with not enforcing pre-commit, but then also merged “short” and “long” version.
pytest 5.3.5 (2020-01-29)¶
pytest 5.3.4 (2020-01-20)¶
pytest 5.3.3 (2020-01-16)¶
Bug Fixes¶
#2780: Captured output during teardown is shown with
-rP
.#5971: Fix a
pytest-xdist
crash when dealing with exceptions raised in subprocesses created by themultiprocessing
module.#6436:
FixtureDef
objects now properly register their finalizers with autouse and parameterized fixtures that execute before them in the fixture stack so they are torn down at the right times, and in the right order.#6532: Fix parsing of outcomes containing multiple errors with
testdir
results (regression in 5.3.0).
pytest 5.3.2 (2019-12-13)¶
Improvements¶
#4639: Revert “A warning is now issued when assertions are made for
None
”.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_cache
directory are kept with--cache-clear
, which only clears cached values now.#6301: Fix assertion rewriting for egg-based distributions and
editable
installs (pip install --editable
).
pytest 5.3.1 (2019-11-25)¶
Improvements¶
#6231: Improve check for misspelling of pytest.mark.parametrize.
#6257: Handle
_pytest.outcomes.exit()
being used viapytest_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.
pytest 5.3.0 (2019-11-19)¶
Deprecations¶
#6179: The default value of
junit_family
option will change to"xunit2"
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 butjunit_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 optionlog_auto_indent
and support for per-entry configuration of indentation behavior on calls tologging.log()
.Alters the default for auto-indention from
"on"
to"off"
. 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:
testdir
learned two new functions,no_fnmatch_line()
andno_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()
:result = testdir.runpytest() assert re.match(pat, result.stdout.str()) is None
Or the
in
operator:result = testdir.runpytest() assert text in result.stdout.str()
But the new functions produce best output on failure.
#6057: Added tolerances to complex values when printing
pytest.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 to
pytest_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 in
doctest
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 ]
#5934:
repr
ofExceptionInfo
objects has been improved to honor the__repr__
method of the underlying exception.#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
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’s
LineMatcher
.#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 “[…%]” 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’s
Hookrecorder.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 in
saferepr
, which includespytest.fail.Exception
etc.#6074: pytester: fixed order of arguments in
rm_rf
warning when cleaning up temporary directories, and do not emit warnings for errors withos.open
.#6189: Fixed result of
getmodpath
method.
pytest 5.2.4 (2019-11-15)¶
pytest 5.2.3 (2019-11-14)¶
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 with
KeyboardInterrupt
during--setup-show
.#5946: Fixed issue when parametrizing fixtures with numpy arrays (and possibly other sequence-like types).
#6044: Properly ignore
FileNotFoundError
exceptions when trying to remove old temporary directories, for instance when multiple processes try to remove the same directory (common withpytest-xdist
for example).
pytest 5.2.1 (2019-10-06)¶
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¶
pytest 5.1.3 (2019-09-18)¶
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 like
pytest-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 ofC:\test
).
pytest 5.1.1 (2019-08-20)¶
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 if
unittest2
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¶
Improvements¶
Bug Fixes¶
#4344: Fix RuntimeError/StopIteration when trying to collect package with “__init__.py” only.
#5115: Warnings issued during
pytest_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.#5524: Fix issue where
tmp_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, like
numpy
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 of
staticmethod
objects defined withfunctools.partial
.#5734: Skip async generator test functions, and update the warning message to refer to
async def
functions.
Trivial/Internal Changes¶
#5095: XML files of the
xunit2
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 internal
SafeRepr
class and removed some dead code.#5664: When invoking pytest’s own testsuite with
PYTHONDONTWRITEBYTECODE=1
, thetest_xfail_handling
test no longer fails.#5684: Replace manual handling of
OSError.errno
in the codebase by newOSError
subclasses (PermissionError
,FileNotFoundError
, etc.).
pytest 5.0.0 (2019-06-28)¶
Important¶
This release is a Python3.5+ only release.
For more details, see our Python 2.7 and 3.4 support plan.
Removals¶
#1149: Pytest no longer accepts prefixes of command-line arguments, for example typing
pytest --doctest-mod
inplace of--doctest-modules
. This was previously allowed where theArgumentParser
thought it was unambiguous, but this could be incorrect due to delayed parsing of options for plugins. See for example issues #1149, #3413, and #4009.#5402: PytestDeprecationWarning are now errors by default.
Following our plan to remove deprecated features with as little disruption as possible, all warnings of type
PytestDeprecationWarning
now generate errors instead of warning messages.The affected features will be effectively removed in pytest 5.1, so please consult the Deprecations and Removals section in the docs for directions on how to update existing code.
In the pytest
5.0.X
series, it is possible to change the errors back into warnings as a stop gap measure by adding this to yourpytest.ini
file:[pytest] filterwarnings = ignore::pytest.PytestDeprecationWarning
But this will stop working when pytest
5.1
is released.If you have concerns about the removal of a specific feature, please add a comment to #5402.
#5412:
ExceptionInfo
objects (returned bypytest.raises
) now have the samestr
representation asrepr
, which avoids some confusion when users useprint(e)
to inspect the object.This means code like:
with pytest.raises(SomeException) as e: ... assert "some message" in str(e)
Needs to be changed to:
with pytest.raises(SomeException) as e: ... assert "some message" in str(e.value)
Deprecations¶
Features¶
#3457: New pytest_assertion_pass hook, called with context information when an assertion passes.
This hook is still experimental so use it with caution.
#5440: The faulthandler standard library module is now enabled by default to help users diagnose crashes in C modules.
This functionality was provided by integrating the external pytest-faulthandler plugin into the core, so users should remove that plugin from their requirements if used.
For more information see the docs: https://docs.pytest.org/en/latest/usage.html#fault-handler
#5452: When warnings are configured as errors, pytest warnings now appear as originating from
pytest.
instead of the internal_pytest.warning_types.
module.#5125:
Session.exitcode
values are now coded inpytest.ExitCode
, anIntEnum
. This makes the exit code available for consumer code and are more explicit other than just documentation. User defined exit codes are still valid, but should be used with caution.The team doesn’t expect this change to break test suites or plugins in general, except in esoteric/specific scenarios.
pytest-xdist users should upgrade to
1.29.0
or later, aspytest-xdist
required a compatibility fix because of this change.
Bug Fixes¶
#1403: Switch from
imp
toimportlib
.#1671: The name of the
.pyc
files cached by the assertion writer now includes the pytest version to avoid stale caches.#2761: Honor PEP 235 on case-insensitive file systems.
#5078: Test module is no longer double-imported when using
--pyargs
.#5260: Improved comparison of byte strings.
When comparing bytes, the assertion message used to show the byte numeric value when showing the differences:
def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: 115 != 101 E Use -v to get the full diff
It now shows the actual ascii representation instead, which is often more useful:
def test(): > assert b'spam' == b'eggs' E AssertionError: assert b'spam' == b'eggs' E At index 0 diff: b's' != b'e' E Use -v to get the full diff
#5335: Colorize level names when the level in the logging format is formatted using ‘%(levelname).Xs’ (truncated fixed width alignment), where X is an integer.
#5354: Fix
pytest.mark.parametrize
when the argvalues is an iterator.#5370: Revert unrolling of
all()
to fixNameError
on nested comprehensions.#5371: Revert unrolling of
all()
to fix incorrect handling of generators withif
.#5372: Revert unrolling of
all()
to fix incorrect assertion when usingall()
in an expression.#5383:
-q
has again an impact on the style of the collected items (--collect-only
) when--log-cli-level
is used.#5389: Fix regressions of #5063 for
importlib_metadata.PathDistribution
which have theirfiles
attribute beingNone
.#5390: Fix regression where the
obj
attribute ofTestCase
items was no longer bound to methods.#5404: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (#5080).
#5432: Prevent “already imported” warnings from assertion rewriter when invoking pytest in-process multiple times.
#5433: Fix assertion rewriting in packages (
__init__.py
).#5444: Fix
--stepwise
mode when the first file passed on the command-line fails to collect.#5482: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to
pytest.mark.parametrize
.#5505: Fix crash when discovery fails while using
-p no:terminal
.
pytest 4.6.9 (2020-01-04)¶
pytest 4.6.8 (2019-12-19)¶
pytest 4.6.7 (2019-12-05)¶
Bug Fixes¶
#5477: The XML file produced by
--junitxml
now correctly contain a<testsuites>
root element.#6044: Properly ignore
FileNotFoundError
(OSError.errno == NOENT
in Python 2) exceptions when trying to remove old temporary directories, for instance when multiple processes try to remove the same directory (common withpytest-xdist
for example).
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 deprecated
cmp
attribute inattrs>=19.2
.
pytest 4.6.5 (2019-08-05)¶
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_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.#5547:
--step-wise
now handlesxfail(strict=True)
markers properly.#5650: Improved output when parsing an ini configuration file fails.
pytest 4.6.4 (2019-06-28)¶
Bug Fixes¶
#5404: Emit a warning when attempting to unwrap a broken object raises an exception, for easier debugging (#5080).
#5444: Fix
--stepwise
mode when the first file passed on the command-line fails to collect.#5482: Fix bug introduced in 4.6.0 causing collection errors when passing more than 2 positional arguments to
pytest.mark.parametrize
.#5505: Fix crash when discovery fails while using
-p no:terminal
.
pytest 4.6.3 (2019-06-11)¶
Bug Fixes¶
#5383:
-q
has again an impact on the style of the collected items (--collect-only
) when--log-cli-level
is used.#5389: Fix regressions of #5063 for
importlib_metadata.PathDistribution
which have theirfiles
attribute beingNone
.#5390: Fix regression where the
obj
attribute ofTestCase
items was no longer bound to methods.
pytest 4.6.2 (2019-06-03)¶
pytest 4.6.1 (2019-06-02)¶
pytest 4.6.0 (2019-05-31)¶
Important¶
The 4.6.X
series will be the last series to support Python 2 and Python 3.4.
For more details, see our Python 2.7 and 3.4 support plan.
Features¶
#4559: Added the
junit_log_passing_tests
ini value which can be used to enable or disable logging of passing test output in the Junit XML file.#4956: pytester’s
testdir.spawn
usestmpdir
as HOME/USERPROFILE directory.#5062: Unroll calls to
all
to full for-loops with assertion rewriting for better failure messages, especially when using Generator Expressions.#5063: Switch from
pkg_resources
toimportlib-metadata
for entrypoint detection for improved performance and import time.#5091: The output for ini options in
--help
has been improved.#5269:
pytest.importorskip
includes theImportError
now in the defaultreason
.#5311: Captured logs that are output for each failing test are formatted using the ColoredLevelFormatter.
#5312: Improved formatting of multiline log messages in Python 3.
Bug Fixes¶
#2064: The debugging plugin imports the wrapped
Pdb
class (--pdbcls
) on-demand now.#4908: The
pytest_enter_pdb
hook gets called with post-mortem (--pdb
).#5036: Fix issue where fixtures dependent on other parametrized fixtures would be erroneously parametrized.
#5256: Handle internal error due to a lone surrogate unicode character not being representable in Jython.
#5257: Ensure that
sys.stdout.mode
does not include'b'
as it is a text stream.#5278: Pytest’s internal python plugin can be disabled using
-p no:python
again.#5286: Fix issue with
disable_test_id_escaping_and_forfeit_all_rights_to_community_support
option not working when using a list of test IDs in parametrized tests.#5330: Show the test module being collected when emitting
PytestCollectionWarning
messages for test classes with__init__
and__new__
methods to make it easier to pin down the problem.#5333: Fix regression in 4.5.0 with
--lf
not re-running all tests with known failures from non-selected tests.
Archive¶
For older changelogs see the changelog archive.