Pytes

Latest version: v7

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

Scan your dependencies

Page 2 of 13

3.0.2

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

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

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

* Fix ``UnicodeEncodeError`` when string comparison with unicode has failed. (`1864`_)
Thanks `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 (`1888`_).
Thanks `jaraco`_ for the report and `nicoddemus`_ for the PR (`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 (`1890`_). Thanks
`mbyt`_ for the PR.

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

.. _joguSD: https://github.com/joguSD
.. _AiOO: https://github.com/AiOO
.. _mbyt: https://github.com/mbyt
.. _ViviCoder: https://github.com/ViviCoder

.. _1857: https://github.com/pytest-dev/pytest/issues/1857
.. _1864: https://github.com/pytest-dev/pytest/issues/1864
.. _1888: https://github.com/pytest-dev/pytest/issues/1888
.. _1891: https://github.com/pytest-dev/pytest/pull/1891
.. _1890: https://github.com/pytest-dev/pytest/issues/1890
.. _1898: https://github.com/pytest-dev/pytest/issues/1898

3.0.1

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

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

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

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

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


.. _Kingdread: https://github.com/Kingdread
.. _mbachry: https://github.com/mbachry
.. _OPpuolitaival: https://github.com/OPpuolitaival

.. _1822: https://github.com/pytest-dev/pytest/issues/1822
.. _1832: https://github.com/pytest-dev/pytest/issues/1832
.. _1849: https://github.com/pytest-dev/pytest/issues/1849

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
`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 `RedBeardCode`_ for the PR (`1664`_).

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

* Removed support code for Python 3 versions < 3.3 (`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 (`1632`_).
Thanks `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 (`607`_).
Thanks `omarkohl`_ for the complete PR (`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 (`1421`_).
A ``--continue-on-collection-errors`` option has been added to restore the previous behaviour.
Thanks `olegpidsadnyi`_ and `omarkohl`_ for the complete PR (`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 (`460`_).
Thanks to `nikratio`_ for the bug report, `RedBeardCode`_ and `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 `milliams`_ for the complete PR (`1428`_).

* New ``--doctest-report`` option available to change the output format of diffs
when running (failing) doctests (implements `1749`_).
Thanks `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 `novas0x2a`_ for the complete PR (`1444`_).

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

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

* New ``ExceptionInfo.match()`` method to match a regular expression on the
string representation of an exception (`372`_).
Thanks `omarkohl`_ for the complete PR (`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 `The-Compiler`_ for the complete PR (`1526`_).

* New ``pytest_make_parametrize_id(config, val)`` hook which can be used by plugins to provide
friendly strings for custom types.
Thanks `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 `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 `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
`1629`_. Thanks `obestwalter`_ and `davehunt`_ for the complete PR
(`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 (`1609`_);

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

* New CLI flag ``--override-ini``/``-o``: overrides values from the ini file.
For example: ``"-o xfail_strict=True"``'.
Thanks `blueyed`_ and `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 `d6e`_, `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 `1562`_). Thanks `kvas-it`_, for the PR.

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


**Changes**

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

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

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

* Highlight path of the file location in the error report to make it easier to copy/paste.
Thanks `suzaku`_ for the PR (`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 (`1461`_).
Thanks `csaftoiu`_ for bringing this to attention and `nicoddemus`_ for the PR.

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

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

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

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

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

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

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

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

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

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

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

* Text documents without any doctests no longer appear as "skipped".
Thanks `graingert`_ for reporting and providing a full PR (`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 `taschini`_ for the PR (`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 `bagerard`_ for reporting (`1503`_). Thanks to `davehunt`_ and
`tomviner`_ for the PR.

* ``OptionGroup.addoption()`` now checks if option names were already
added before, to make it easier to track down issues like `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 `nicoddemus`_ for the PR.

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

* Using ``pytest_funcarg__`` prefix to declare fixtures is considered deprecated and will be
removed in pytest-4.0 (`1684`_).
Thanks `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 (`1723`_).

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

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


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

* Refined logic for determining the ``rootdir``, considering only valid
paths which fixes a number of issues: `1594`_, `1435`_ and `1471`_.
Updated the documentation according to current behavior. Thanks to
`blueyed`_, `davehunt`_ and `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 `bagerard`_ for reporting (`1503`_). Thanks to `davehunt`_ and
`tomviner`_ for PR.

* Better message in case of not using parametrized variable (see `1539`_).
Thanks to `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 `BeyondEvil`_ for reporting `1210`_. Thanks to `JonathonSonesen`_ and
`tomviner`_ for the PR.

* No longer display the incorrect test deselection reason (`1372`_).
Thanks `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 `830`_).
Thanks `nicoddemus`_ for the PR.

* Improve error message with fixture lookup errors: add an 'E' to the first
line and '>' to the rest. Fixes `717`_. Thanks `blueyed`_ for reporting and
a PR, `eolo999`_ for the initial PR and `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()`` (`1605`_).

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

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

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

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

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

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

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

* Fixed the total tests tally in junit xml output (`1798`_).
Thanks to `cryporchild`_ for the PR.

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


.. _1210: https://github.com/pytest-dev/pytest/issues/1210
.. _1235: https://github.com/pytest-dev/pytest/issues/1235
.. _1351: https://github.com/pytest-dev/pytest/issues/1351
.. _1372: https://github.com/pytest-dev/pytest/issues/1372
.. _1421: https://github.com/pytest-dev/pytest/issues/1421
.. _1426: https://github.com/pytest-dev/pytest/issues/1426
.. _1428: https://github.com/pytest-dev/pytest/pull/1428
.. _1435: https://github.com/pytest-dev/pytest/issues/1435
.. _1441: https://github.com/pytest-dev/pytest/pull/1441
.. _1444: https://github.com/pytest-dev/pytest/pull/1444
.. _1454: https://github.com/pytest-dev/pytest/pull/1454
.. _1461: https://github.com/pytest-dev/pytest/pull/1461
.. _1468: https://github.com/pytest-dev/pytest/pull/1468
.. _1471: https://github.com/pytest-dev/pytest/issues/1471
.. _1474: https://github.com/pytest-dev/pytest/pull/1474
.. _1479: https://github.com/pytest-dev/pytest/issues/1479
.. _1502: https://github.com/pytest-dev/pytest/pull/1502
.. _1503: https://github.com/pytest-dev/pytest/issues/1503
.. _1516: https://github.com/pytest-dev/pytest/pull/1516
.. _1519: https://github.com/pytest-dev/pytest/pull/1519
.. _1520: https://github.com/pytest-dev/pytest/pull/1520
.. _1526: https://github.com/pytest-dev/pytest/pull/1526
.. _1539: https://github.com/pytest-dev/pytest/issues/1539
.. _1544: https://github.com/pytest-dev/pytest/issues/1544
.. _1546: https://github.com/pytest-dev/pytest/issues/1546
.. _1553: https://github.com/pytest-dev/pytest/issues/1553
.. _1562: https://github.com/pytest-dev/pytest/issues/1562
.. _1579: https://github.com/pytest-dev/pytest/issues/1579
.. _1580: https://github.com/pytest-dev/pytest/pull/1580
.. _1594: https://github.com/pytest-dev/pytest/issues/1594
.. _1597: https://github.com/pytest-dev/pytest/pull/1597
.. _1605: https://github.com/pytest-dev/pytest/issues/1605
.. _1616: https://github.com/pytest-dev/pytest/pull/1616
.. _1618: https://github.com/pytest-dev/pytest/issues/1618
.. _1619: https://github.com/pytest-dev/pytest/issues/1619
.. _1626: https://github.com/pytest-dev/pytest/pull/1626
.. _1627: https://github.com/pytest-dev/pytest/pull/1627
.. _1628: https://github.com/pytest-dev/pytest/pull/1628
.. _1629: https://github.com/pytest-dev/pytest/issues/1629
.. _1632: https://github.com/pytest-dev/pytest/issues/1632
.. _1633: https://github.com/pytest-dev/pytest/pull/1633
.. _1664: https://github.com/pytest-dev/pytest/pull/1664
.. _1668: https://github.com/pytest-dev/pytest/issues/1668
.. _1684: https://github.com/pytest-dev/pytest/pull/1684
.. _1723: https://github.com/pytest-dev/pytest/pull/1723
.. _1740: https://github.com/pytest-dev/pytest/issues/1740
.. _1749: https://github.com/pytest-dev/pytest/issues/1749
.. _1778: https://github.com/pytest-dev/pytest/pull/1778
.. _1795: https://github.com/pytest-dev/pytest/pull/1795
.. _1798: https://github.com/pytest-dev/pytest/pull/1798
.. _1809: https://github.com/pytest-dev/pytest/pull/1809
.. _372: https://github.com/pytest-dev/pytest/issues/372
.. _457: https://github.com/pytest-dev/pytest/issues/457
.. _460: https://github.com/pytest-dev/pytest/pull/460
.. _567: https://github.com/pytest-dev/pytest/pull/567
.. _607: https://github.com/pytest-dev/pytest/issues/607
.. _634: https://github.com/pytest-dev/pytest/issues/634
.. _717: https://github.com/pytest-dev/pytest/issues/717
.. _830: https://github.com/pytest-dev/pytest/issues/830
.. _925: https://github.com/pytest-dev/pytest/issues/925


.. _anntzer: https://github.com/anntzer
.. _bagerard: https://github.com/bagerard
.. _BeyondEvil: https://github.com/BeyondEvil
.. _blueyed: https://github.com/blueyed
.. _ceridwen: https://github.com/ceridwen
.. _cryporchild: https://github.com/cryporchild
.. _csaftoiu: https://github.com/csaftoiu
.. _d6e: https://github.com/d6e
.. _davehunt: https://github.com/davehunt
.. _DRMacIver: https://github.com/DRMacIver
.. _eolo999: https://github.com/eolo999
.. _fengxx: https://github.com/fengxx
.. _flub: https://github.com/flub
.. _gprasad84: https://github.com/gprasad84
.. _graingert: https://github.com/graingert
.. _hartym: https://github.com/hartym
.. _JonathonSonesen: https://github.com/JonathonSonesen
.. _kalekundert: https://github.com/kalekundert
.. _kvas-it: https://github.com/kvas-it
.. _marscher: https://github.com/marscher
.. _mikofski: https://github.com/mikofski
.. _milliams: https://github.com/milliams
.. _nikratio: https://github.com/nikratio
.. _novas0x2a: https://github.com/novas0x2a
.. _obestwalter: https://github.com/obestwalter
.. _okken: https://github.com/okken
.. _olegpidsadnyi: https://github.com/olegpidsadnyi
.. _omarkohl: https://github.com/omarkohl
.. _palaviv: https://github.com/palaviv
.. _RedBeardCode: https://github.com/RedBeardCode
.. _sallner: https://github.com/sallner
.. _sober7: https://github.com/sober7
.. _Stranger6667: https://github.com/Stranger6667
.. _suzaku: https://github.com/suzaku
.. _tareqalayan: https://github.com/tareqalayan
.. _taschini: https://github.com/taschini
.. _tramwaj29: https://github.com/tramwaj29
.. _txomon: https://github.com/txomon
.. _Vogtinator: https://github.com/Vogtinator
.. _matthiasha: https://github.com/matthiasha

2.9.2

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

**Bug Fixes**

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

* Fix Xfail does not work with condition keyword argument.
Thanks `astraw38`_ for reporting the issue (`1496`_) and `tomviner`_
for PR the (`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 `prusse-martin`_ for the PR (`1506`_).

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

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

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

.. _510: https://github.com/pytest-dev/pytest/issues/510
.. _1506: https://github.com/pytest-dev/pytest/pull/1506
.. _1496: https://github.com/pytest-dev/pytest/issues/1496
.. _1524: https://github.com/pytest-dev/pytest/pull/1524

.. _prusse-martin: https://github.com/prusse-martin
.. _astraw38: https://github.com/astraw38

2.9.1

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

**Bug Fixes**

* Improve error message when a plugin fails to load.
Thanks `nicoddemus`_ for the PR.

* Fix (`1178 <https://github.com/pytest-dev/pytest/issues/1178>`_):
``pytest.fail`` with non-ascii characters raises an internal pytest error.
Thanks `nicoddemus`_ for the PR.

* Fix (`469`_): junit parses report.nodeid incorrectly, when params IDs
contain ``::``. Thanks `tomviner`_ for the PR (`1431`_).

* Fix (`578 <https://github.com/pytest-dev/pytest/issues/578>`_): SyntaxErrors
containing non-ascii lines at the point of failure generated an internal
py.test error.
Thanks `asottile`_ for the report and `nicoddemus`_ for the PR.

* Fix (`1437`_): When passing in a bytestring regex pattern to parameterize
attempt to decode it as utf-8 ignoring errors.

* Fix (`649`_): parametrized test nodes cannot be specified to run on the command line.

* Fix (`138`_): better reporting for python 3.3+ chained exceptions

.. _1437: https://github.com/pytest-dev/pytest/issues/1437
.. _469: https://github.com/pytest-dev/pytest/issues/469
.. _1431: https://github.com/pytest-dev/pytest/pull/1431
.. _649: https://github.com/pytest-dev/pytest/issues/649
.. _138: https://github.com/pytest-dev/pytest/issues/138

.. _asottile: https://github.com/asottile

2.9.0

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

**New Features**

* New ``pytest.mark.skip`` mark, which unconditionally skips marked tests.
Thanks `MichaelAquilina`_ for the complete PR (`1040`_).

* ``--doctest-glob`` may now be passed multiple times in the command-line.
Thanks `jab`_ and `nicoddemus`_ for the PR.

* New ``-rp`` and ``-rP`` reporting options give the summary and full output
of passing tests, respectively. Thanks to `codewarrior0`_ for the PR.

* ``pytest.mark.xfail`` now has a ``strict`` option, which makes ``XPASS``
tests to fail the test suite (defaulting to ``False``). There's also a
``xfail_strict`` ini option that can be used to configure it project-wise.
Thanks `rabbbit`_ for the request and `nicoddemus`_ for the PR (`1355`_).

* ``Parser.addini`` now supports options of type ``bool``.
Thanks `nicoddemus`_ for the PR.

* New ``ALLOW_BYTES`` doctest option. This strips ``b`` prefixes from byte strings
in doctest output (similar to ``ALLOW_UNICODE``).
Thanks `jaraco`_ for the request and `nicoddemus`_ for the PR (`1287`_).

* Give a hint on ``KeyboardInterrupt`` to use the ``--fulltrace`` option to show the errors.
Fixes `1366`_.
Thanks to `hpk42`_ for the report and `RonnyPfannschmidt`_ for the PR.

* Catch ``IndexError`` exceptions when getting exception source location.
Fixes a pytest internal error for dynamically generated code (fixtures and tests)
where source lines are fake by intention.

**Changes**

* **Important**: `py.code <https://pylib.readthedocs.io/en/latest/code.html>`_ has been
merged into the ``pytest`` repository as ``pytest._code``. This decision
was made because ``py.code`` had very few uses outside ``pytest`` and the
fact that it was in a different repository made it difficult to fix bugs on
its code in a timely manner. The team hopes with this to be able to better
refactor out and improve that code.
This change shouldn't affect users, but it is useful to let users aware
if they encounter any strange behavior.

Keep in mind that the code for ``pytest._code`` is **private** and
**experimental**, so you definitely should not import it explicitly!

Please note that the original ``py.code`` is still available in
`pylib <https://pylib.readthedocs.io>`_.

* ``pytest_enter_pdb`` now optionally receives the pytest config object.
Thanks `nicoddemus`_ for the PR.

* Removed code and documentation for Python 2.5 or lower versions,
including removal of the obsolete ``_pytest.assertion.oldinterpret`` module.
Thanks `nicoddemus`_ for the PR (`1226`_).

* Comparisons now always show up in full when ``CI`` or ``BUILD_NUMBER`` is
found in the environment, even when ``-vv`` isn't used.
Thanks `The-Compiler`_ for the PR.

* ``--lf`` and ``--ff`` now support long names: ``--last-failed`` and
``--failed-first`` respectively.
Thanks `MichaelAquilina`_ for the PR.

* Added expected exceptions to ``pytest.raises`` fail message.

* Collection only displays progress ("collecting X items") when in a terminal.
This avoids cluttering the output when using ``--color=yes`` to obtain
colors in CI integrations systems (`1397`_).

**Bug Fixes**

* The ``-s`` and ``-c`` options should now work under ``xdist``;
``Config.fromdictargs`` now represents its input much more faithfully.
Thanks to `bukzor`_ for the complete PR (`680`_).

* Fix (`1290`_): support Python 3.5's ` operator in assertion rewriting.
Thanks `Shinkenjoe`_ for report with test case and `tomviner`_ for the PR.

* Fix formatting utf-8 explanation messages (`1379`_).
Thanks `biern`_ for the PR.

* Fix `traceback style docs`_ to describe all of the available options
(auto/long/short/line/native/no), with ``auto`` being the default since v2.6.
Thanks `hackebrot`_ for the PR.

* Fix (`1422`_): junit record_xml_property doesn't allow multiple records
with same name.

.. _`traceback style docs`: https://pytest.org/latest/usage.htmlmodifying-python-traceback-printing

.. _1609: https://github.com/pytest-dev/pytest/issues/1609
.. _1422: https://github.com/pytest-dev/pytest/issues/1422
.. _1379: https://github.com/pytest-dev/pytest/issues/1379
.. _1366: https://github.com/pytest-dev/pytest/issues/1366
.. _1040: https://github.com/pytest-dev/pytest/pull/1040
.. _680: https://github.com/pytest-dev/pytest/issues/680
.. _1287: https://github.com/pytest-dev/pytest/pull/1287
.. _1226: https://github.com/pytest-dev/pytest/pull/1226
.. _1290: https://github.com/pytest-dev/pytest/pull/1290
.. _1355: https://github.com/pytest-dev/pytest/pull/1355
.. _1397: https://github.com/pytest-dev/pytest/issues/1397
.. _biern: https://github.com/biern
.. _MichaelAquilina: https://github.com/MichaelAquilina
.. _bukzor: https://github.com/bukzor
.. _hpk42: https://github.com/hpk42
.. _nicoddemus: https://github.com/nicoddemus
.. _jab: https://github.com/jab
.. _codewarrior0: https://github.com/codewarrior0
.. _jaraco: https://github.com/jaraco
.. _The-Compiler: https://github.com/The-Compiler
.. _Shinkenjoe: https://github.com/Shinkenjoe
.. _tomviner: https://github.com/tomviner
.. _RonnyPfannschmidt: https://github.com/RonnyPfannschmidt
.. _rabbbit: https://github.com/rabbbit
.. _hackebrot: https://github.com/hackebrot
.. _pquentin: https://github.com/pquentin
.. _ioggstream: https://github.com/ioggstream

Page 2 of 13

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.