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 EXPRESSIONto test names is now case-insensitive.#6443: Plugins specified with
-pare now loaded after internal plugins, which results in their hooks being called before the internal ones.This makes the
-pbehavior consistent withPYTEST_PLUGINS.#6637: Removed the long-deprecated
pytest_itemstarthook.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_resultattribute ofFixtureDefis now set toNonewhen the result is unavailable, instead of being deleted.If your plugin performs checks like
hasattr(fixturedef, 'cached_result'), for example in apytest_fixture_post_finalizerhook implementation, replace it withfixturedef.cached_result is not None. If youdelthe attribute, set it toNoneinstead.
Deprecations¶
#3238: Option
--no-print-logsis deprecated and meant to be removed in a future release. If you use--no-print-logs, please try out--show-captureand provide feedback.--show-capturecommand-line option was added inpytest 3.5.0and allows to specify how to display captured output when tests fail:no,stdout,stderr,logorall(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
Noderelationships 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_parentif 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.parametrizeneed 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
-rtofE, which displays failures and errors in the short test summary.-rNcan be used to disable it (the old behavior).#6469: New options have been added to the
junit_loggingoption:log,out-err, andall.
Improvements¶
#1857:
pytest.mark.parametrizeaccepts integers foridsagain, 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.mktempnow fails when given absolute and non-normalized paths.#5984: The
pytest_warning_capturedhook now receives alocationparameter 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
testdirfixture respects environment settings from themonkeypatchfixture for inner runs.#6232: Display traceback / error location with errors from
--strict-markers.#6247:
--fulltraceis honored with collection errors.#6384: Make
--showlocalswork 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
pygmentsis installed.Users are encouraged to install
pygmentsinto their environment and provide feedback, because the plan is to makepygmentsa regular dependency in the future.#6795: Import usage error message with invalid
-ooption.#759:
pytest.mark.parametrizesupports iterators and generators forids.
Bug Fixes¶
#310: Add support for calling
pytest.xfail()andpytest.importorskip()with doctests.#3823:
--tracenow 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_tracewrapper when used in child threads after main thread exited.#5301: Fix
--last-failedto collect new tests from files with known failures.#5928: Report
PytestUnknownMarkWarningat the level of the user’s code, notpytest’s.#5991: Fix interaction with
--pdband unittests: do not use unittest’sTestCase.debug().#6334: Fix summary entries appearing twice when
f/Fands/Sreport chars were used at the same time in the-rcommand-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-warningsis honored with-raand-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 == bcannot 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.writelinesto call the underlying buffer’swritelinesmethod.#6575: Fix internal crash when
faulthandlerstarts initialized (for example withPYTHONFAULTHANDLER=1environment variable set) andfaulthandler_timeoutdefined 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.runpytestetc.#6660:
pytest.exit()is handled when emitted from thepytest_sessionfinishhook. 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), amatchkeyword 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.rstStarted 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-xdistcrash when dealing with exceptions raised in subprocesses created by themultiprocessingmodule.#6436:
FixtureDefobjects 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
testdirresults (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_cachedirectory are kept with--cache-clear, which only clears cached values now.#6301: Fix assertion rewriting for egg-based distributions and
editableinstalls (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
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.
pytest 5.3.0 (2019-11-19)¶
Deprecations¶
#6179: The default value of
junit_familyoption 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
--junitxmloption is given in the command line butjunit_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 optionlog_auto_indentand 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:
testdirlearned 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
inoperator: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. Forapproxcomparisons to returnTrue, the actual value should fall within this circle.#6061: Added the pluginmanager as an argument to
pytest_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 in
doctestitems.#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:
reprofExceptionInfoobjects 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.argsis now always atupleto better convey that it should be immutable and avoid accidental modifications.#6023:
pytest.mainreturns apytest.ExitCodeinstance now, except for when custom exit codes are used (where it returnsintthen 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.spawndoes 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
--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’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.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 in
saferepr, which includespytest.fail.Exceptionetc.#6074: pytester: fixed order of arguments in
rm_rfwarning when cleaning up temporary directories, and do not emit warnings for errors withos.open.#6189: Fixed result of
getmodpathmethod.
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
--nfto not forget about known nodeids with partial test selection.#5906: Fix crash with
KeyboardInterruptduring--setup-show.#5946: Fixed issue when parametrizing fixtures with numpy arrays (and possibly other sequence-like types).
#6044: Properly ignore
FileNotFoundErrorexceptions when trying to remove old temporary directories, for instance when multiple processes try to remove the same directory (common withpytest-xdistfor 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
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¶
pytest 5.1.3 (2019-09-18)¶
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 like
pytest-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 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.getfixturevalueinstead.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 raiseTypeErroron 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 if
unittest2is 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¶
Improvements¶
Bug Fixes¶
#4344: Fix RuntimeError/StopIteration when trying to collect package with “__init__.py” only.
#5115: Warnings issued during
pytest_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.#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.#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, like
numpyarrays.#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 of
staticmethodobjects defined withfunctools.partial.#5734: Skip async generator test functions, and update the warning message to refer to
async deffunctions.
Trivial/Internal Changes¶
#5095: XML files of the
xunit2family 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
SafeReprclass and removed some dead code.#5664: When invoking pytest’s own testsuite with
PYTHONDONTWRITEBYTECODE=1, thetest_xfail_handlingtest no longer fails.#5684: Replace manual handling of
OSError.errnoin the codebase by newOSErrorsubclasses (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-modinplace of--doctest-modules. This was previously allowed where theArgumentParserthought 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
PytestDeprecationWarningnow 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.Xseries, it is possible to change the errors back into warnings as a stop gap measure by adding this to yourpytest.inifile:[pytest] filterwarnings = ignore::pytest.PytestDeprecationWarning
But this will stop working when pytest
5.1is released.If you have concerns about the removal of a specific feature, please add a comment to #5402.
#5412:
ExceptionInfoobjects (returned bypytest.raises) now have the samestrrepresentation 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.exitcodevalues 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.0or later, aspytest-xdistrequired a compatibility fix because of this change.
Bug Fixes¶
#1403: Switch from
imptoimportlib.#1671: The name of the
.pycfiles 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.parametrizewhen the argvalues is an iterator.#5370: Revert unrolling of
all()to fixNameErroron 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:
-qhas again an impact on the style of the collected items (--collect-only) when--log-cli-levelis used.#5389: Fix regressions of #5063 for
importlib_metadata.PathDistributionwhich have theirfilesattribute beingNone.#5390: Fix regression where the
objattribute ofTestCaseitems 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
--stepwisemode 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
--junitxmlnow correctly contain a<testsuites>root element.#6044: Properly ignore
FileNotFoundError(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).
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
--pastebinto “text”.#5902: Fix warnings about deprecated
cmpattribute 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_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.
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
--stepwisemode 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:
-qhas again an impact on the style of the collected items (--collect-only) when--log-cli-levelis used.#5389: Fix regressions of #5063 for
importlib_metadata.PathDistributionwhich have theirfilesattribute beingNone.#5390: Fix regression where the
objattribute ofTestCaseitems 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_testsini value which can be used to enable or disable logging of passing test output in the Junit XML file.#4956: pytester’s
testdir.spawnusestmpdiras HOME/USERPROFILE directory.#5062: Unroll calls to
allto full for-loops with assertion rewriting for better failure messages, especially when using Generator Expressions.#5063: Switch from
pkg_resourcestoimportlib-metadatafor entrypoint detection for improved performance and import time.#5091: The output for ini options in
--helphas been improved.#5269:
pytest.importorskipincludes theImportErrornow 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
Pdbclass (--pdbcls) on-demand now.#4908: The
pytest_enter_pdbhook 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.modedoes not include'b'as it is a text stream.#5278: Pytest’s internal python plugin can be disabled using
-p no:pythonagain.#5286: Fix issue with
disable_test_id_escaping_and_forfeit_all_rights_to_community_supportoption not working when using a list of test IDs in parametrized tests.#5330: Show the test module being collected when emitting
PytestCollectionWarningmessages 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
--lfnot re-running all tests with known failures from non-selected tests.
Archive¶
For older changelogs see the changelog archive.