Pytest

Latest version: v8.2.0

Safety actively analyzes 630305 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 8 of 33

5.4.1

=========================

Bug Fixes
---------

- :issue:`6909`: Revert the change introduced by :pull:`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.


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

5.4.0

=========================

Breaking Changes
----------------

- :issue:`6316`: Matching of ``-k EXPRESSION`` to test names is now case-insensitive.


- :issue:`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``.


- :issue:`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.


- :issue:`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.


- :issue:`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
------------

- :issue:`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).


- :issue:`571`: Deprecate the unused/broken `pytest_collect_directory` 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.


- :issue:`5975`: Deprecate using direct constructors for ``Nodes``.

Instead they are now constructed via ``Node.from_parent``.

This transitional mechanism enables us to untangle the very intensely
entangled ``Node`` relationships by enforcing more controlled creation/configuration patterns.

As part of this change, 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 of `Nodes`.


- :issue:`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
with ``py.io.TerminalWriter``.



Features
--------

- :issue:`4597`: New :ref:`--capture=tee-sys <capture-method>` option to allow both live printing and capturing of test output.


- :issue:`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.


- :issue:`6454`: Changed default for `-r` to `fE`, which displays failures and errors in the :ref:`short test summary <pytest.detailed_failed_tests_usage>`. `-rN` can be used to disable it (the old behavior).


- :issue:`6469`: New options have been added to the :confval:`junit_logging` option: ``log``, ``out-err``, and ``all``.


- :issue:`6834`: Excess warning summaries are now collapsed per file to ensure readable display of warning summaries.



Improvements
------------

- :issue:`1857`: ``pytest.mark.parametrize`` accepts integers for ``ids`` again, converting it to strings.


- :issue:`449`: Use "yellow" main color with any XPASSED tests.


- :issue:`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.


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


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


- :issue:`6213`: pytester: the ``testdir`` fixture respects environment settings from the ``monkeypatch`` fixture for inner runs.


- :issue:`6247`: ``--fulltrace`` is honored with collection errors.


- :issue:`6384`: Make `--showlocals` work also with `--tb=short`.


- :issue:`6653`: Add support for matching lines consecutively with :class:`~pytest.LineMatcher`'s :func:`~pytest.LineMatcher.fnmatch_lines` and :func:`~pytest.LineMatcher.re_match_lines`.


- :issue:`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.


- :issue:`6795`: Import usage error message with invalid `-o` option.


- :issue:`759`: ``pytest.mark.parametrize`` supports iterators and generators for ``ids``.



Bug Fixes
---------

- :issue:`310`: Add support for calling `pytest.xfail()` and `pytest.importorskip()` with doctests.


- :issue:`3823`: ``--trace`` now works with unittests.


- :issue:`4445`: Fixed some warning reports produced by pytest to point to the correct location of the warning in the user's code.


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


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


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


- :issue:`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.


- :issue:`6409`: Fallback to green (instead of yellow) for non-last items without previous passes with colored terminal progress indicator.


- :issue:`6454`: `--disable-warnings` is honored with `-ra` and `-rA`.


- :issue:`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 :class:`bool`.
The implemented fix replaces `==` with ``is``.


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


- :issue:`6566`: Fix ``EncodedFile.writelines`` to call the underlying buffer's ``writelines`` method.


- :issue:`6575`: Fix internal crash when ``faulthandler`` starts initialized
(for example with ``PYTHONFAULTHANDLER=1`` environment variable set) and ``faulthandler_timeout`` defined
in the configuration file.


- :issue:`6597`: Fix node ids which contain a parametrized empty-string variable.


- :issue:`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.


- :issue:`6660`: :py:func:`pytest.exit` is handled when emitted from the :hook:`pytest_sessionfinish` hook. This includes quitting from a debugger.


- :issue:`6752`: When :py:func:`pytest.raises` is used as a function (as opposed to a context manager),
a `match` keyword argument is now passed through to the tested function. Previously
it was swallowed and ignored (regression in pytest 5.1.0).


- :issue:`6801`: Do not display empty lines in between traceback for unexpected exceptions with doctests.


- :issue:`6802`: The :fixture:`testdir fixture <testdir>` works within doctests now.



Improved Documentation
----------------------

- :issue:`6696`: Add list of fixtures to start of fixture chapter.


- :issue:`6742`: Expand first sentence on fixtures into a paragraph.



Trivial/Internal Changes
------------------------

- :issue:`6404`: Remove usage of ``parser`` module, deprecated in Python 3.9.

5.3.5

=========================

Bug Fixes
---------

- :issue:`6517`: Fix regression in pytest 5.3.4 causing an INTERNALERROR due to a wrong assertion.

5.3.4

=========================

Bug Fixes
---------

- :issue:`6496`: Revert :issue:`6436`: 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.

5.3.3

=========================

Bug Fixes
---------

- :issue:`2780`: Captured output during teardown is shown with ``-rP``.


- :issue:`5971`: Fix a ``pytest-xdist`` crash when dealing with exceptions raised in subprocesses created by the
``multiprocessing`` module.


- :issue:`6436`: :class:`~pytest.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.


- :issue:`6532`: Fix parsing of outcomes containing multiple errors with ``testdir`` results (regression in 5.3.0).



Trivial/Internal Changes
------------------------

- :issue:`6350`: Optimized automatic renaming of test parameter IDs.

5.3.2

=========================

Improvements
------------

- :issue:`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
---------

- :issue:`5430`: junitxml: Logs for failed test are now passed to junit report in case the test fails during call phase.


- :issue:`6290`: The supporting files in the ``.pytest_cache`` directory are kept with ``--cache-clear``, which only clears cached values now.


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

Page 8 of 33

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.