Link [ pkgsrc | NetBSD | pkgsrc git mirror | PR fulltext-search | netbsd commit viewer ]


   
        usage: [branch:branch] [user:user] [path[@revision]] keyword [... [-excludekeyword [...]]] (e.g. branch:MAIN pkgtools/pkg)




switch to index mode

recent branches: MAIN (4h)  pkgsrc-2024Q1 (20d)  pkgsrc-2023Q4 (67d)  pkgsrc-2023Q2 (99d)  pkgsrc-2023Q3 (179d) 

2024-06-07 01:06:51 UTC Now

2016-08-22 13:26:28 UTC MAIN commitmail json YAML

Updated py-test to 3.0.0.

Add ALTERNATIVES file.

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.  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.

* Raise helpful failure message, when requesting parametrized fixture at runtime,
  e.g. with ``request.getfuncargvalue``. BACKWARD INCOMPAT: Previously these params
  were simply never defined. So a fixture decorated like ``@pytest.fixture(params=[0, 1, 2])``
  only ran once. Now a failure is raised. Fixes (`#460`_). Thanks to
  `@nikratio`_ for bug report, `@RedBeardCode`_ and `@tomviner`_ 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`_.
  Thanks to `@blueyed`_ and `@davehunt`_ 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.

* Renamed the pytest ``pdb`` module (plugin) into ``debugging``.

* 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.

* Add an 'E' to the first line of error messages from FixtureLookupErrorRepr.
  Fixes `#717`_. Thanks `@blueyed`_ for reporting, `@eolo999`_ for the PR
  and `@tomviner`_ for his guidance during EuroPython2016 sprint.

* 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.

(wiz)