Pytest

Latest version: v8.2.0

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

Scan your dependencies

Page 22 of 33

3.0.4

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

* Import errors when collecting test modules now display the full traceback (:issue:`1976`).
Thanks :user:`cwitty` for the report and :user:`nicoddemus` for the PR.

* Fix confusing command-line help message for custom options with two or more ``metavar`` properties (:issue:`2004`).
Thanks :user:`okulynyak` and :user:`davehunt` for the report and :user:`nicoddemus` for the PR.

* When loading plugins, import errors which contain non-ascii messages are now properly handled in Python 2 (:issue:`1998`).
Thanks :user:`nicoddemus` for the PR.

* Fixed cyclic reference when ``pytest.raises`` is used in context-manager form (:issue:`1965`). Also as a
result of this fix, ``sys.exc_info()`` is left empty in both context-manager and function call usages.
Previously, ``sys.exc_info`` would contain the exception caught by the context manager,
even when the expected exception occurred.
Thanks :user:`MSeifert04` for the report and the PR.

* Fixed false-positives warnings from assertion rewrite hook for modules that were rewritten but
were later marked explicitly by ``pytest.register_assert_rewrite``
or implicitly as a plugin (:issue:`2005`).
Thanks :user:`RonnyPfannschmidt` for the report and :user:`nicoddemus` for the PR.

* Report teardown output on test failure (:issue:`442`).
Thanks :user:`matclab` for the PR.

* Fix teardown error message in generated xUnit XML.
Thanks :user:`gdyuldin` for the PR.

* Properly handle exceptions in ``multiprocessing`` tasks (:issue:`1984`).
Thanks :user:`adborden` for the report and :user:`nicoddemus` for the PR.

* Clean up unittest TestCase objects after tests are complete (:issue:`1649`).
Thanks :user:`d-b-w` for the report and PR.

3.0.3

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

* The ``ids`` argument to ``parametrize`` again accepts ``unicode`` strings
in Python 2 (:issue:`1905`).
Thanks :user:`philpep` for the report and :user:`nicoddemus` for the PR.

* Assertions are now being rewritten for plugins in development mode
(``pip install -e``) (:issue:`1934`).
Thanks :user:`nicoddemus` for the PR.

* Fix pkg_resources import error in Jython projects (:issue:`1853`).
Thanks :user:`raquelalegre` for the PR.

* Got rid of ``AttributeError: 'Module' object has no attribute '_obj'`` exception
in Python 3 (:issue:`1944`).
Thanks :user:`axil` for the PR.

* Explain a bad scope value passed to ``fixture`` declarations or
a ``MetaFunc.parametrize()`` call.

* This version includes ``pluggy-0.4.0``, which correctly handles
``VersionConflict`` errors in plugins (:issue:`704`).
Thanks :user:`nicoddemus` for the PR.

3.0.2

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

* Improve error message when passing non-string ids to ``pytest.mark.parametrize`` (:issue:`1857`).
Thanks :user:`okken` for the report and :user:`nicoddemus` for the PR.

* Add ``buffer`` attribute to stdin stub class ``pytest.capture.DontReadFromInput``
Thanks :user:`joguSD` for the PR.

* Fix ``UnicodeEncodeError`` when string comparison with unicode has failed. (:issue:`1864`)
Thanks :user:`AiOO` for the PR.

* ``pytest_plugins`` is now handled correctly if defined as a string (as opposed as
a sequence of strings) when modules are considered for assertion rewriting.
Due to this bug, much more modules were being rewritten than necessary
if a test suite uses ``pytest_plugins`` to load internal plugins (:issue:`1888`).
Thanks :user:`jaraco` for the report and :user:`nicoddemus` for the PR (:pull:`1891`).

* Do not call tearDown and cleanups when running tests from
``unittest.TestCase`` subclasses with ``--pdb``
enabled. This allows proper post mortem debugging for all applications
which have significant logic in their tearDown machinery (:issue:`1890`). Thanks
:user:`mbyt` for the PR.

* Fix use of deprecated ``getfuncargvalue`` method in the internal doctest plugin.
Thanks :user:`ViviCoder` for the report (:issue:`1898`).

3.0.1

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

* Fix regression when ``importorskip`` is used at module level (:issue:`1822`).
Thanks :user:`jaraco` and :user:`The-Compiler` for the report and :user:`nicoddemus` for the PR.

* Fix parametrization scope when session fixtures are used in conjunction
with normal parameters in the same call (:issue:`1832`).
Thanks :user:`The-Compiler` for the report, :user:`Kingdread` and :user:`nicoddemus` for the PR.

* Fix internal error when parametrizing tests or fixtures using an empty ``ids`` argument (:issue:`1849`).
Thanks :user:`OPpuolitaival` for the report and :user:`nicoddemus` for the PR.

* Fix loader error when running ``pytest`` embedded in a zipfile.
Thanks :user:`mbachry` for the PR.


.. _release-3.0.0:

3.0.0

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

**Incompatible changes**


A number of incompatible changes were made in this release, with the intent of removing features deprecated for a long
time or change existing behaviors in order to make them less surprising/more useful.

* Reinterpretation mode has now been removed. Only plain and rewrite
mode are available, consequently the ``--assert=reinterp`` option is
no longer available. This also means files imported from plugins or
``conftest.py`` will not benefit from improved assertions by
default, you should use ``pytest.register_assert_rewrite()`` to
explicitly turn on assertion rewriting for those files. Thanks
:user:`flub` for the PR.

* The following deprecated commandline options were removed:

* ``--genscript``: no longer supported;
* ``--no-assert``: use ``--assert=plain`` instead;
* ``--nomagic``: use ``--assert=plain`` instead;
* ``--report``: use ``-r`` instead;

Thanks to :user:`RedBeardCode` for the PR (:pull:`1664`).

* ImportErrors in plugins now are a fatal error instead of issuing a
pytest warning (:issue:`1479`). Thanks to :user:`The-Compiler` for the PR.

* Removed support code for Python 3 versions < 3.3 (:pull:`1627`).

* Removed all ``py.test-X*`` entry points. The versioned, suffixed entry points
were never documented and a leftover from a pre-virtualenv era. These entry
points also created broken entry points in wheels, so removing them also
removes a source of confusion for users (:issue:`1632`).
Thanks :user:`obestwalter` for the PR.

* ``pytest.skip()`` now raises an error when used to decorate a test function,
as opposed to its original intent (to imperatively skip a test inside a test function). Previously
this usage would cause the entire module to be skipped (:issue:`607`).
Thanks :user:`omarkohl` for the complete PR (:pull:`1519`).

* Exit tests if a collection error occurs. A poll indicated most users will hit CTRL-C
anyway as soon as they see collection errors, so pytest might as well make that the default behavior (:issue:`1421`).
A ``--continue-on-collection-errors`` option has been added to restore the previous behaviour.
Thanks :user:`olegpidsadnyi` and :user:`omarkohl` for the complete PR (:pull:`1628`).

* Renamed the pytest ``pdb`` module (plugin) into ``debugging`` to avoid clashes with the builtin ``pdb`` module.

* Raise a helpful failure message when requesting a parametrized fixture at runtime,
e.g. with ``request.getfixturevalue``. Previously these parameters were simply
never defined, so a fixture decorated like ``pytest.fixture(params=[0, 1, 2])``
only ran once (:pull:`460`).
Thanks to :user:`nikratio` for the bug report, :user:`RedBeardCode` and :user:`tomviner` for the PR.

* ``_pytest.monkeypatch.monkeypatch`` class has been renamed to ``_pytest.monkeypatch.MonkeyPatch``
so it doesn't conflict with the ``monkeypatch`` fixture.

* ``--exitfirst / -x`` can now be overridden by a following ``--maxfail=N``
and is just a synonym for ``--maxfail=1``.


**New Features**

* Support nose-style ``__test__`` attribute on methods of classes,
including unittest-style Classes. If set to ``False``, the test will not be
collected.

* New ``doctest_namespace`` fixture for injecting names into the
namespace in which doctests run.
Thanks :user:`milliams` for the complete PR (:pull:`1428`).

* New ``--doctest-report`` option available to change the output format of diffs
when running (failing) doctests (implements :issue:`1749`).
Thanks :user:`hartym` for the PR.

* New ``name`` argument to ``pytest.fixture`` decorator which allows a custom name
for a fixture (to solve the funcarg-shadowing-fixture problem).
Thanks :user:`novas0x2a` for the complete PR (:pull:`1444`).

* New ``approx()`` function for easily comparing floating-point numbers in
tests.
Thanks :user:`kalekundert` for the complete PR (:pull:`1441`).

* Ability to add global properties in the final xunit output file by accessing
the internal ``junitxml`` plugin (experimental).
Thanks :user:`tareqalayan` for the complete PR :pull:`1454`).

* New ``ExceptionInfo.match()`` method to match a regular expression on the
string representation of an exception (:issue:`372`).
Thanks :user:`omarkohl` for the complete PR (:pull:`1502`).

* ``__tracebackhide__`` can now also be set to a callable which then can decide
whether to filter the traceback based on the ``ExceptionInfo`` object passed
to it. Thanks :user:`The-Compiler` for the complete PR (:pull:`1526`).

* New ``pytest_make_parametrize_id(config, val)`` hook which can be used by plugins to provide
friendly strings for custom types.
Thanks :user:`palaviv` for the PR.

* ``capsys`` and ``capfd`` now have a ``disabled()`` context-manager method, which
can be used to temporarily disable capture within a test.
Thanks :user:`nicoddemus` for the PR.

* New cli flag ``--fixtures-per-test``: shows which fixtures are being used
for each selected test item. Features doc strings of fixtures by default.
Can also show where fixtures are defined if combined with ``-v``.
Thanks :user:`hackebrot` for the PR.

* Introduce ``pytest`` command as recommended entry point. Note that ``py.test``
still works and is not scheduled for removal. Closes proposal
:issue:`1629`. Thanks :user:`obestwalter` and :user:`davehunt` for the complete PR
(:pull:`1633`).

* New cli flags:

+ ``--setup-plan``: performs normal collection and reports
the potential setup and teardown and does not execute any fixtures and tests;
+ ``--setup-only``: performs normal collection, executes setup and teardown of
fixtures and reports them;
+ ``--setup-show``: performs normal test execution and additionally shows
setup and teardown of fixtures;
+ ``--keep-duplicates``: py.test now ignores duplicated paths given in the command
line. To retain the previous behavior where the same test could be run multiple
times by specifying it in the command-line multiple times, pass the ``--keep-duplicates``
argument (:issue:`1609`);

Thanks :user:`d6e`, :user:`kvas-it`, :user:`sallner`, :user:`ioggstream` and :user:`omarkohl` for the PRs.

* New CLI flag ``--override-ini``/``-o``: overrides values from the ini file.
For example: ``"-o xfail_strict=True"``'.
Thanks :user:`blueyed` and :user:`fengxx` for the PR.

* New hooks:

+ ``pytest_fixture_setup(fixturedef, request)``: executes fixture setup;
+ ``pytest_fixture_post_finalizer(fixturedef)``: called after the fixture's
finalizer and has access to the fixture's result cache.

Thanks :user:`d6e`, :user:`sallner`.

* Issue warnings for asserts whose test is a tuple literal. Such asserts will
never fail because tuples are always truthy and are usually a mistake
(see :issue:`1562`). Thanks :user:`kvas-it`, for the PR.

* Allow passing a custom debugger class (e.g. ``--pdbcls=IPython.core.debugger:Pdb``).
Thanks to :user:`anntzer` for the PR.


**Changes**

* Plugins now benefit from assertion rewriting. Thanks
:user:`sober7`, :user:`nicoddemus` and :user:`flub` for the PR.

* Change ``report.outcome`` for ``xpassed`` tests to ``"passed"`` in non-strict
mode and ``"failed"`` in strict mode. Thanks to :user:`hackebrot` for the PR
(:pull:`1795`) and :user:`gprasad84` for report (:issue:`1546`).

* Tests marked with ``xfail(strict=False)`` (the default) now appear in
JUnitXML reports as passing tests instead of skipped.
Thanks to :user:`hackebrot` for the PR (:pull:`1795`).

* Highlight path of the file location in the error report to make it easier to copy/paste.
Thanks :user:`suzaku` for the PR (:pull:`1778`).

* Fixtures marked with ``pytest.fixture`` can now use ``yield`` statements exactly like
those marked with the ``pytest.yield_fixture`` decorator. This change renders
``pytest.yield_fixture`` deprecated and makes ``pytest.fixture`` with ``yield`` statements
the preferred way to write teardown code (:pull:`1461`).
Thanks :user:`csaftoiu` for bringing this to attention and :user:`nicoddemus` for the PR.

* Explicitly passed parametrize ids do not get escaped to ascii (:issue:`1351`).
Thanks :user:`ceridwen` for the PR.

* Fixtures are now sorted in the error message displayed when an unknown
fixture is declared in a test function.
Thanks :user:`nicoddemus` for the PR.

* ``pytest_terminal_summary`` hook now receives the ``exitstatus``
of the test session as argument. Thanks :user:`blueyed` for the PR (:pull:`1809`).

* Parametrize ids can accept ``None`` as specific test id, in which case the
automatically generated id for that argument will be used.
Thanks :user:`palaviv` for the complete PR (:pull:`1468`).

* The parameter to xunit-style setup/teardown methods (``setup_method``,
``setup_module``, etc.) is now optional and may be omitted.
Thanks :user:`okken` for bringing this to attention and :user:`nicoddemus` for the PR.

* Improved automatic id generation selection in case of duplicate ids in
parametrize.
Thanks :user:`palaviv` for the complete PR (:pull:`1474`).

* Now pytest warnings summary is shown up by default. Added a new flag
``--disable-pytest-warnings`` to explicitly disable the warnings summary (:issue:`1668`).

* Make ImportError during collection more explicit by reminding
the user to check the name of the test module/package(s) (:issue:`1426`).
Thanks :user:`omarkohl` for the complete PR (:pull:`1520`).

* Add ``build/`` and ``dist/`` to the default ``--norecursedirs`` list. Thanks
:user:`mikofski` for the report and :user:`tomviner` for the PR (:issue:`1544`).

* ``pytest.raises`` in the context manager form accepts a custom
``message`` to raise when no exception occurred.
Thanks :user:`palaviv` for the complete PR (:pull:`1616`).

* ``conftest.py`` files now benefit from assertion rewriting; previously it
was only available for test modules. Thanks :user:`flub`, :user:`sober7` and
:user:`nicoddemus` for the PR (:issue:`1619`).

* Text documents without any doctests no longer appear as "skipped".
Thanks :user:`graingert` for reporting and providing a full PR (:pull:`1580`).

* Ensure that a module within a namespace package can be found when it
is specified on the command line together with the ``--pyargs``
option. Thanks to :user:`taschini` for the PR (:pull:`1597`).

* Always include full assertion explanation during assertion rewriting. The previous behaviour was hiding
sub-expressions that happened to be ``False``, assuming this was redundant information.
Thanks :user:`bagerard` for reporting (:issue:`1503`). Thanks to :user:`davehunt` and
:user:`tomviner` for the PR.

* ``OptionGroup.addoption()`` now checks if option names were already
added before, to make it easier to track down issues like :issue:`1618`.
Before, you only got exceptions later from ``argparse`` library,
giving no clue about the actual reason for double-added options.

* ``yield``-based tests are considered deprecated and will be removed in pytest-4.0.
Thanks :user:`nicoddemus` for the PR.

* ``[pytest]`` sections in ``setup.cfg`` files should now be named ``[tool:pytest]``
to avoid conflicts with other distutils commands (see :pull:`567`). ``[pytest]`` sections in
``pytest.ini`` or ``tox.ini`` files are supported and unchanged.
Thanks :user:`nicoddemus` for the PR.

* Using ``pytest_funcarg__`` prefix to declare fixtures is considered deprecated and will be
removed in pytest-4.0 (:pull:`1684`).
Thanks :user:`nicoddemus` for the PR.

* Passing a command-line string to ``pytest.main()`` is considered deprecated and scheduled
for removal in pytest-4.0. It is recommended to pass a list of arguments instead (:pull:`1723`).

* Rename ``getfuncargvalue`` to ``getfixturevalue``. ``getfuncargvalue`` is
still present but is now considered deprecated. Thanks to :user:`RedBeardCode` and :user:`tomviner`
for the PR (:pull:`1626`).

* ``optparse`` type usage now triggers DeprecationWarnings (:issue:`1740`).


* ``optparse`` backward compatibility supports float/complex types (:issue:`457`).

* Refined logic for determining the ``rootdir``, considering only valid
paths which fixes a number of issues: :issue:`1594`, :issue:`1435` and :issue:`1471`.
Updated the documentation according to current behavior. Thanks to
:user:`blueyed`, :user:`davehunt` and :user:`matthiasha` for the PR.

* Always include full assertion explanation. The previous behaviour was hiding
sub-expressions that happened to be False, assuming this was redundant information.
Thanks :user:`bagerard` for reporting (:issue:`1503`). Thanks to :user:`davehunt` and
:user:`tomviner` for PR.

* Better message in case of not using parametrized variable (see :issue:`1539`).
Thanks to :user:`tramwaj29` for the PR.

* Updated docstrings with a more uniform style.

* Add stderr write for ``pytest.exit(msg)`` during startup. Previously the message was never shown.
Thanks :user:`BeyondEvil` for reporting :issue:`1210`. Thanks to jgsonesen and
:user:`tomviner` for the PR.

* No longer display the incorrect test deselection reason (:issue:`1372`).
Thanks :user:`ronnypfannschmidt` for the PR.

* The ``--resultlog`` command line option has been deprecated: it is little used
and there are more modern and better alternatives (see :issue:`830`).
Thanks :user:`nicoddemus` for the PR.

* Improve error message with fixture lookup errors: add an 'E' to the first
line and '>' to the rest. Fixes :issue:`717`. Thanks :user:`blueyed` for reporting and
a PR, :user:`eolo999` for the initial PR and :user:`tomviner` for his guidance during
EuroPython2016 sprint.


**Bug Fixes**

* Parametrize now correctly handles duplicated test ids.

* Fix internal error issue when the ``method`` argument is missing for
``teardown_method()`` (:issue:`1605`).

* Fix exception visualization in case the current working directory (CWD) gets
deleted during testing (:issue:`1235`). Thanks :user:`bukzor` for reporting. PR by
:user:`marscher`.

* Improve test output for logical expression with brackets (:issue:`925`).
Thanks :user:`DRMacIver` for reporting and :user:`RedBeardCode` for the PR.

* Create correct diff for strings ending with newlines (:issue:`1553`).
Thanks :user:`Vogtinator` for reporting and :user:`RedBeardCode` and
:user:`tomviner` for the PR.

* ``ConftestImportFailure`` now shows the traceback making it easier to
identify bugs in ``conftest.py`` files (:pull:`1516`). Thanks :user:`txomon` for
the PR.

* Text documents without any doctests no longer appear as "skipped".
Thanks :user:`graingert` for reporting and providing a full PR (:pull:`1580`).

* Fixed collection of classes with custom ``__new__`` method.
Fixes :issue:`1579`. Thanks to :user:`Stranger6667` for the PR.

* Fixed scope overriding inside metafunc.parametrize (:issue:`634`).
Thanks to :user:`Stranger6667` for the PR.

* Fixed the total tests tally in junit xml output (:pull:`1798`).
Thanks to :user:`cboelsen` for the PR.

* Fixed off-by-one error with lines from ``request.node.warn``.
Thanks to :user:`blueyed` for the PR.

2.9.2

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

**Bug Fixes**

* fix :issue:`510`: skip tests where one parameterize dimension was empty
thanks Alex Stapleton for the Report and :user:`RonnyPfannschmidt` for the PR

* Fix Xfail does not work with condition keyword argument.
Thanks :user:`astraw38` for reporting the issue (:issue:`1496`) and :user:`tomviner`
for PR the (:pull:`1524`).

* Fix win32 path issue when putting custom config file with absolute path
in ``pytest.main("-c your_absolute_path")``.

* Fix maximum recursion depth detection when raised error class is not aware
of unicode/encoded bytes.
Thanks :user:`prusse-martin` for the PR (:pull:`1506`).

* Fix ``pytest.mark.skip`` mark when used in strict mode.
Thanks :user:`pquentin` for the PR and :user:`RonnyPfannschmidt` for
showing how to fix the bug.

* Minor improvements and fixes to the documentation.
Thanks :user:`omarkohl` for the PR.

* Fix ``--fixtures`` to show all fixture definitions as opposed to just
one per fixture name.
Thanks to :user:`hackebrot` for the PR.

Page 22 of 33

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.