All Versions
Latest Version
Avg Release Cycle
28 days
Latest Release
437 days ago

Changelog History
Page 2

  • v5.4.1 Changes

    March 13, 2020

    ✅ pytest 5.4.1 (2020-03-13)

    🐛 Bug Fixes

    #6909: Revert the change introduced by #6330, which required all arguments to @pytest.mark.parametrize to be explicitly defined in the function signature.

    ⏪ The intention of the original change was to remove what was expected to be an unintended/surprising behavior, but it turns out many people relied on it, so the restriction has been reverted.

    #6910: Fix crash when plugins return an unknown stats while using the --reportlog option.

  • v5.4.0 Changes

    March 12, 2020

    💥 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 with PYTEST_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 of FixtureDef is now set to None when
    the result is unavailable, instead of being deleted.

    🔌 If your plugin performs checks like hasattr(fixturedef, 'cached_result'),
    🛠 for example in a pytest_fixture_post_finalizer hook implementation, replace
    it with fixturedef.cached_result is not None. If you del the attribute,
    set it to None 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 in pytest 3.5.0 and allows to specify how to
    ✅ display captured output when tests fail: no, stdout, stderr, log or all (the default).

    #571: Deprecate the unused/broken [pytest_collect_directory]{.title-ref} hook.
    It was misaligned since the removal of the Directory collector in 2010
    ✅ and incorrect/unusable as soon as collection was split from test execution.

    #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]{.title-ref} if they intend to expand the creation of [Nodes]{.title-ref}.

    #6779: The TerminalReporter.writer attribute has been deprecated and should no longer be used. This
    🔌 was inadvertently exposed as part of the public API of that plugin and ties it too much

    🔋 Features

    • #4597: New --capture=tee-sys <capture-method>{.interpreted-text role="ref"} 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 via indirect.
      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]{.title-ref} to [fE]{.title-ref}, which displays failures and errors in the short test summary <pytest.detailed_failed_tests_usage>{.interpreted-text role="ref"}. [-rN]{.title-ref} can be used to disable it (the old behavior).
    • #6469: New options have been added to the junit_logging{.interpreted-text role="confval"} option: log, out-err, and all.
    • #6834: Excess warning summaries are now collapsed per file to ensure readable display of warning summaries.

    👌 Improvements

    #1857: pytest.mark.parametrize accepts integers for ids 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.

    #5686: tmpdir_factory.mktemp now fails when given absolute and non-normalized paths.

    #5984: The pytest_warning_captured hook now receives a location parameter with the code location that generated the warning.

    #6213: pytester: the testdir fixture respects environment settings from the monkeypatch fixture for inner runs.

    #6247: --fulltrace is honored with collection errors.

    #6384: Make [--showlocals]{.title-ref} work also with [--tb=short]{.title-ref}.

    #6653: Add support for matching lines consecutively with LineMatcher <_pytest.pytester.LineMatcher>{.interpreted-text role="attr"}'s ~_pytest.pytester.LineMatcher.fnmatch_lines{.interpreted-text role="func"} and ~_pytest.pytester.LineMatcher.re_match_lines{.interpreted-text role="func"}.

    #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 make pygments a regular dependency in the future.

    #6795: Import usage error message with invalid [-o]{.title-ref} option.

    #759: pytest.mark.parametrize supports iterators and generators for ids.

    🐛 Bug Fixes

    #310: Add support for calling [pytest.xfail()]{.title-ref} and [pytest.importorskip()]{.title-ref} 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.

    #5301: Fix --last-failed to collect new tests from files with known failures.

    #5928: Report PytestUnknownMarkWarning at the level of the user's code, not pytest's.

    #5991: Fix interaction with --pdb and unittests: do not use unittest's TestCase.debug().

    #6334: Fix summary entries appearing twice when f/F and s/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]{.title-ref} is honored with [-ra]{.title-ref} and [-rA]{.title-ref}.

    #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 of a == b cannot generally be converted to [bool]{.title-ref}.
    The implemented fix replaces [==]{.title-ref} with is.

    #6557: Make capture output streams .write() method return the same return value from original streams.

    #6566: Fix EncodedFile.writelines to call the underlying buffer's writelines method.

    #6575: Fix internal crash when faulthandler starts initialized
    (for example with PYTHONFAULTHANDLER=1 environment variable set) and faulthandler_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 <_pytest.pytester.Testdir.runpytest>{.interpreted-text role="func"} etc.

    #6660: pytest.exit() <_pytest.outcomes.exit>{.interpreted-text role="func"} is handled when emitted from the pytest_sessionfinish <_pytest.hookspec.pytest_sessionfinish>{.interpreted-text role="func"} hook. This includes quitting from a debugger.

    #6752: When :pypytest.raises{.interpreted-text role="func"} is used as a function (as opposed to a context manager),
    ✅ a [match]{.title-ref} 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.

    #6802: The testdir fixture <testdir>{.interpreted-text role="fixture"} works within doctests now.

    👌 Improved Documentation

    • #6696: Add list of fixtures to start of fixture chapter.
    • #6742: Expand first sentence on fixtures into a paragraph.

    Trivial/Internal Changes

    • 🚚 #6404: Remove usage of parser module, deprecated in Python 3.9.
  • v5.3.5 Changes

    January 29, 2020

    ✅ pytest 5.3.5 (2020-01-29)

    🐛 Bug Fixes

    • #6517: Fix
      ✅ regression in pytest 5.3.4 causing an INTERNALERROR due to a wrong
  • v5.3.4 Changes

    January 20, 2020

    ✅ pytest 5.3.4 (2020-01-20)

    🐛 Bug Fixes

    • #6496: Revert
      unfortunately this change has caused a number of regressions in many
      ⏪ suites, so the team decided to revert this change and make a new
      🚀 release while we continue to look for a solution.
  • v5.3.3 Changes

    January 17, 2020

    ✅ 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 the multiprocessing module.
    • #6436:
      🛠 FixtureDef <_pytest.fixtures.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).

    Trivial/Internal Changes

    • #6350:
      ⚡️ Optimized automatic renaming of test parameter IDs.
  • v5.3.2 Changes

    December 14, 2019

    ✅ 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).
  • v5.3.1 Changes

    November 26, 2019

    ✅ 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 and sys.last_value attributes by deleting them instead of setting them to None. This better matches the behaviour of the Python standard library.
  • v4.6.11 Changes

    June 05, 2020

    🐛 Bug Fixes

    #6334: Fix summary entries appearing twice when f/F and s/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.

    #7310: Fix UnboundLocalError: local variable 'letter' referenced before assignment in _pytest.terminal.pytest_report_teststatus()
    🔌 when plugins return report objects in an unconventional state.

    This was making pytest_report_teststatus() skip
    entering if-block branches that declare the letter variable.

    The fix was to set the initial value of the letter before
    the if-block cascade so that it always has a value.

  • v4.6.10

    May 08, 2020
  • v4.6.9 Changes

    January 04, 2020

    ✅ pytest 4.6.9 (2020-01-04)

    🐛 Bug Fixes

    • #6301: Fix
      assertion rewriting for egg-based distributions and editable
      installs (pip install --editable).