5049 lines
203 KiB
ReStructuredText
5049 lines
203 KiB
ReStructuredText
..
|
|
You should *NOT* be adding new change log entries to this file, this
|
|
file is managed by towncrier. You *may* edit previous change logs to
|
|
fix problems like typo corrections or such.
|
|
To add a new change log entry, please see
|
|
https://pip.pypa.io/en/latest/development/#adding-a-news-entry
|
|
we named the news folder changelog
|
|
|
|
.. towncrier release notes start
|
|
|
|
pytest 3.7.1 (2018-08-02)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- `#3473 <https://github.com/pytest-dev/pytest/issues/3473>`_: Raise immediately if ``approx()`` is given an expected value of a type it doesn't understand (e.g. strings, nested dicts, etc.).
|
|
|
|
|
|
- `#3712 <https://github.com/pytest-dev/pytest/issues/3712>`_: Correctly represent the dimensions of an numpy array when calling ``repr()`` on ``approx()``.
|
|
|
|
- `#3742 <https://github.com/pytest-dev/pytest/issues/3742>`_: Fix incompatibility with third party plugins during collection, which produced the error ``object has no attribute '_collectfile'``.
|
|
|
|
- `#3745 <https://github.com/pytest-dev/pytest/issues/3745>`_: Display the absolute path if ``cache_dir`` is not relative to the ``rootdir`` instead of failing.
|
|
|
|
|
|
- `#3747 <https://github.com/pytest-dev/pytest/issues/3747>`_: Fix compatibility problem with plugins and the warning code issued by fixture functions when they are called directly.
|
|
|
|
|
|
- `#3748 <https://github.com/pytest-dev/pytest/issues/3748>`_: Fix infinite recursion in ``pytest.approx`` with arrays in ``numpy<1.13``.
|
|
|
|
|
|
- `#3757 <https://github.com/pytest-dev/pytest/issues/3757>`_: Pin pathlib2 to ``>=2.2.0`` as we require ``__fspath__`` support.
|
|
|
|
|
|
- `#3763 <https://github.com/pytest-dev/pytest/issues/3763>`_: Fix ``TypeError`` when the assertion message is ``bytes`` in python 3.
|
|
|
|
|
|
pytest 3.7.0 (2018-07-30)
|
|
=========================
|
|
|
|
Deprecations and Removals
|
|
-------------------------
|
|
|
|
- `#2639 <https://github.com/pytest-dev/pytest/issues/2639>`_: ``pytest_namespace`` has been deprecated.
|
|
|
|
See the documentation for ``pytest_namespace`` hook for suggestions on how to deal
|
|
with this in plugins which use this functionality.
|
|
|
|
|
|
- `#3661 <https://github.com/pytest-dev/pytest/issues/3661>`_: Calling a fixture function directly, as opposed to request them in a test function, now issues a ``RemovedInPytest4Warning``. It will be changed into an error in pytest ``4.0``.
|
|
|
|
This is a great source of confusion to new users, which will often call the fixture functions and request them from test functions interchangeably, which breaks the fixture resolution model.
|
|
|
|
|
|
|
|
Features
|
|
--------
|
|
|
|
- `#2283 <https://github.com/pytest-dev/pytest/issues/2283>`_: New ``package`` fixture scope: fixtures are finalized when the last test of a *package* finishes. This feature is considered **experimental**, so use it sparingly.
|
|
|
|
|
|
- `#3576 <https://github.com/pytest-dev/pytest/issues/3576>`_: ``Node.add_marker`` now supports an ``append=True/False`` parameter to determine whether the mark comes last (default) or first.
|
|
|
|
|
|
- `#3579 <https://github.com/pytest-dev/pytest/issues/3579>`_: Fixture ``caplog`` now has a ``messages`` property, providing convenient access to the format-interpolated log messages without the extra data provided by the formatter/handler.
|
|
|
|
|
|
- `#3610 <https://github.com/pytest-dev/pytest/issues/3610>`_: New ``--trace`` option to enter the debugger at the start of a test.
|
|
|
|
|
|
- `#3623 <https://github.com/pytest-dev/pytest/issues/3623>`_: Introduce ``pytester.copy_example`` as helper to do acceptance tests against examples from the project.
|
|
|
|
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- `#2220 <https://github.com/pytest-dev/pytest/issues/2220>`_: Fix a bug where fixtures overridden by direct parameters (for example parametrization) were being instantiated even if they were not being used by a test.
|
|
|
|
|
|
- `#3695 <https://github.com/pytest-dev/pytest/issues/3695>`_: Fix ``ApproxNumpy`` initialisation argument mixup, ``abs`` and ``rel`` tolerances were flipped causing strange comparsion results.
|
|
Add tests to check ``abs`` and ``rel`` tolerances for ``np.array`` and test for expecting ``nan`` with ``np.array()``
|
|
|
|
|
|
- `#980 <https://github.com/pytest-dev/pytest/issues/980>`_: Fix truncated locals output in verbose mode.
|
|
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- `#3295 <https://github.com/pytest-dev/pytest/issues/3295>`_: Correct the usage documentation of ``--last-failed-no-failures`` by adding the missing ``--last-failed`` argument in the presented examples, because they are misleading and lead to think that the missing argument is not needed.
|
|
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- `#3519 <https://github.com/pytest-dev/pytest/issues/3519>`_: Now a ``README.md`` file is created in ``.pytest_cache`` to make it clear why the directory exists.
|
|
|
|
|
|
pytest 3.6.4 (2018-07-28)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Invoke pytest using ``-mpytest`` so ``sys.path`` does not get polluted by packages installed in ``site-packages``. (`#742 <https://github.com/pytest-dev/pytest/issues/742>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Use ``smtp_connection`` instead of ``smtp`` in fixtures documentation to avoid possible confusion. (`#3592 <https://github.com/pytest-dev/pytest/issues/3592>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Remove obsolete ``__future__`` imports. (`#2319 <https://github.com/pytest-dev/pytest/issues/2319>`_)
|
|
|
|
- Add CITATION to provide information on how to formally cite pytest. (`#3402 <https://github.com/pytest-dev/pytest/issues/3402>`_)
|
|
|
|
- Replace broken type annotations with type comments. (`#3635 <https://github.com/pytest-dev/pytest/issues/3635>`_)
|
|
|
|
- Pin ``pluggy`` to ``<0.8``. (`#3727 <https://github.com/pytest-dev/pytest/issues/3727>`_)
|
|
|
|
|
|
pytest 3.6.3 (2018-07-04)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Fix ``ImportWarning`` triggered by explicit relative imports in
|
|
assertion-rewritten package modules. (`#3061
|
|
<https://github.com/pytest-dev/pytest/issues/3061>`_)
|
|
|
|
- Fix error in ``pytest.approx`` when dealing with 0-dimension numpy
|
|
arrays. (`#3593 <https://github.com/pytest-dev/pytest/issues/3593>`_)
|
|
|
|
- No longer raise ``ValueError`` when using the ``get_marker`` API. (`#3605
|
|
<https://github.com/pytest-dev/pytest/issues/3605>`_)
|
|
|
|
- Fix problem where log messages with non-ascii characters would not
|
|
appear in the output log file.
|
|
(`#3630 <https://github.com/pytest-dev/pytest/issues/3630>`_)
|
|
|
|
- No longer raise ``AttributeError`` when legacy marks can't be stored in
|
|
functions. (`#3631 <https://github.com/pytest-dev/pytest/issues/3631>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- The description above the example for ``@pytest.mark.skipif`` now better
|
|
matches the code. (`#3611
|
|
<https://github.com/pytest-dev/pytest/issues/3611>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Internal refactoring: removed unused ``CallSpec2tox ._globalid_args``
|
|
attribute and ``metafunc`` parameter from ``CallSpec2.copy()``. (`#3598
|
|
<https://github.com/pytest-dev/pytest/issues/3598>`_)
|
|
|
|
- Silence usage of ``reduce`` warning in Python 2 (`#3609
|
|
<https://github.com/pytest-dev/pytest/issues/3609>`_)
|
|
|
|
- Fix usage of ``attr.ib`` deprecated ``convert`` parameter. (`#3653
|
|
<https://github.com/pytest-dev/pytest/issues/3653>`_)
|
|
|
|
|
|
pytest 3.6.2 (2018-06-20)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Fix regression in ``Node.add_marker`` by extracting the mark object of a
|
|
``MarkDecorator``. (`#3555
|
|
<https://github.com/pytest-dev/pytest/issues/3555>`_)
|
|
|
|
- Warnings without ``location`` were reported as ``None``. This is corrected to
|
|
now report ``<undetermined location>``. (`#3563
|
|
<https://github.com/pytest-dev/pytest/issues/3563>`_)
|
|
|
|
- Continue to call finalizers in the stack when a finalizer in a former scope
|
|
raises an exception. (`#3569
|
|
<https://github.com/pytest-dev/pytest/issues/3569>`_)
|
|
|
|
- Fix encoding error with ``print`` statements in doctests (`#3583
|
|
<https://github.com/pytest-dev/pytest/issues/3583>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Add documentation for the ``--strict`` flag. (`#3549
|
|
<https://github.com/pytest-dev/pytest/issues/3549>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Update old quotation style to parens in fixture.rst documentation. (`#3525
|
|
<https://github.com/pytest-dev/pytest/issues/3525>`_)
|
|
|
|
- Improve display of hint about ``--fulltrace`` with ``KeyboardInterrupt``.
|
|
(`#3545 <https://github.com/pytest-dev/pytest/issues/3545>`_)
|
|
|
|
- pytest's testsuite is no longer runnable through ``python setup.py test`` --
|
|
instead invoke ``pytest`` or ``tox`` directly. (`#3552
|
|
<https://github.com/pytest-dev/pytest/issues/3552>`_)
|
|
|
|
- Fix typo in documentation (`#3567
|
|
<https://github.com/pytest-dev/pytest/issues/3567>`_)
|
|
|
|
|
|
pytest 3.6.1 (2018-06-05)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Fixed a bug where stdout and stderr were logged twice by junitxml when a test
|
|
was marked xfail. (`#3491
|
|
<https://github.com/pytest-dev/pytest/issues/3491>`_)
|
|
|
|
- Fix ``usefixtures`` mark applyed to unittest tests by correctly instantiating
|
|
``FixtureInfo``. (`#3498
|
|
<https://github.com/pytest-dev/pytest/issues/3498>`_)
|
|
|
|
- Fix assertion rewriter compatibility with libraries that monkey patch
|
|
``file`` objects. (`#3503
|
|
<https://github.com/pytest-dev/pytest/issues/3503>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Added a section on how to use fixtures as factories to the fixture
|
|
documentation. (`#3461 <https://github.com/pytest-dev/pytest/issues/3461>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Enable caching for pip/pre-commit in order to reduce build time on
|
|
travis/appveyor. (`#3502
|
|
<https://github.com/pytest-dev/pytest/issues/3502>`_)
|
|
|
|
- Switch pytest to the src/ layout as we already suggested it for good practice
|
|
- now we implement it as well. (`#3513
|
|
<https://github.com/pytest-dev/pytest/issues/3513>`_)
|
|
|
|
- Fix if in tests to support 3.7.0b5, where a docstring handling in AST got
|
|
reverted. (`#3530 <https://github.com/pytest-dev/pytest/issues/3530>`_)
|
|
|
|
- Remove some python2.5 compatibility code. (`#3529
|
|
<https://github.com/pytest-dev/pytest/issues/3529>`_)
|
|
|
|
|
|
pytest 3.6.0 (2018-05-23)
|
|
=========================
|
|
|
|
Features
|
|
--------
|
|
|
|
- Revamp the internals of the ``pytest.mark`` implementation with correct per
|
|
node handling which fixes a number of long standing bugs caused by the old
|
|
design. This introduces new ``Node.iter_markers(name)`` and
|
|
``Node.get_closest_mark(name)`` APIs. Users are **strongly encouraged** to
|
|
read the `reasons for the revamp in the docs
|
|
<https://docs.pytest.org/en/latest/mark.html#marker-revamp-and-iteration>`_,
|
|
or jump over to details about `updating existing code to use the new APIs
|
|
<https://docs.pytest.org/en/latest/mark.html#updating-code>`_. (`#3317
|
|
<https://github.com/pytest-dev/pytest/issues/3317>`_)
|
|
|
|
- Now when ``@pytest.fixture`` is applied more than once to the same function a
|
|
``ValueError`` is raised. This buggy behavior would cause surprising problems
|
|
and if was working for a test suite it was mostly by accident. (`#2334
|
|
<https://github.com/pytest-dev/pytest/issues/2334>`_)
|
|
|
|
- Support for Python 3.7's builtin ``breakpoint()`` method, see `Using the
|
|
builtin breakpoint function
|
|
<https://docs.pytest.org/en/latest/usage.html#breakpoint-builtin>`_ for
|
|
details. (`#3180 <https://github.com/pytest-dev/pytest/issues/3180>`_)
|
|
|
|
- ``monkeypatch`` now supports a ``context()`` function which acts as a context
|
|
manager which undoes all patching done within the ``with`` block. (`#3290
|
|
<https://github.com/pytest-dev/pytest/issues/3290>`_)
|
|
|
|
- The ``--pdb`` option now causes KeyboardInterrupt to enter the debugger,
|
|
instead of stopping the test session. On python 2.7, hitting CTRL+C again
|
|
exits the debugger. On python 3.2 and higher, use CTRL+D. (`#3299
|
|
<https://github.com/pytest-dev/pytest/issues/3299>`_)
|
|
|
|
- pytest not longer changes the log level of the root logger when the
|
|
``log-level`` parameter has greater numeric value than that of the level of
|
|
the root logger, which makes it play better with custom logging configuration
|
|
in user code. (`#3307 <https://github.com/pytest-dev/pytest/issues/3307>`_)
|
|
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- A rare race-condition which might result in corrupted ``.pyc`` files on
|
|
Windows has been hopefully solved. (`#3008
|
|
<https://github.com/pytest-dev/pytest/issues/3008>`_)
|
|
|
|
- Also use iter_marker for discovering the marks applying for marker
|
|
expressions from the cli to avoid the bad data from the legacy mark storage.
|
|
(`#3441 <https://github.com/pytest-dev/pytest/issues/3441>`_)
|
|
|
|
- When showing diffs of failed assertions where the contents contain only
|
|
whitespace, escape them using ``repr()`` first to make it easy to spot the
|
|
differences. (`#3443 <https://github.com/pytest-dev/pytest/issues/3443>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Change documentation copyright year to a range which auto-updates itself each
|
|
time it is published. (`#3303
|
|
<https://github.com/pytest-dev/pytest/issues/3303>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- ``pytest`` now depends on the `python-atomicwrites
|
|
<https://github.com/untitaker/python-atomicwrites>`_ library. (`#3008
|
|
<https://github.com/pytest-dev/pytest/issues/3008>`_)
|
|
|
|
- Update all pypi.python.org URLs to pypi.org. (`#3431
|
|
<https://github.com/pytest-dev/pytest/issues/3431>`_)
|
|
|
|
- Detect `pytest_` prefixed hooks using the internal plugin manager since
|
|
``pluggy`` is deprecating the ``implprefix`` argument to ``PluginManager``.
|
|
(`#3487 <https://github.com/pytest-dev/pytest/issues/3487>`_)
|
|
|
|
- Import ``Mapping`` and ``Sequence`` from ``_pytest.compat`` instead of
|
|
directly from ``collections`` in ``python_api.py::approx``. Add ``Mapping``
|
|
to ``_pytest.compat``, import it from ``collections`` on python 2, but from
|
|
``collections.abc`` on Python 3 to avoid a ``DeprecationWarning`` on Python
|
|
3.7 or newer. (`#3497 <https://github.com/pytest-dev/pytest/issues/3497>`_)
|
|
|
|
|
|
pytest 3.5.1 (2018-04-23)
|
|
=========================
|
|
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Reset ``sys.last_type``, ``sys.last_value`` and ``sys.last_traceback`` before
|
|
each test executes. Those attributes are added by pytest during the test run
|
|
to aid debugging, but were never reset so they would create a leaking
|
|
reference to the last failing test's frame which in turn could never be
|
|
reclaimed by the garbage collector. (`#2798
|
|
<https://github.com/pytest-dev/pytest/issues/2798>`_)
|
|
|
|
- ``pytest.raises`` now raises ``TypeError`` when receiving an unknown keyword
|
|
argument. (`#3348 <https://github.com/pytest-dev/pytest/issues/3348>`_)
|
|
|
|
- ``pytest.raises`` now works with exception classes that look like iterables.
|
|
(`#3372 <https://github.com/pytest-dev/pytest/issues/3372>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Fix typo in ``caplog`` fixture documentation, which incorrectly identified
|
|
certain attributes as methods. (`#3406
|
|
<https://github.com/pytest-dev/pytest/issues/3406>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Added a more indicative error message when parametrizing a function whose
|
|
argument takes a default value. (`#3221
|
|
<https://github.com/pytest-dev/pytest/issues/3221>`_)
|
|
|
|
- Remove internal ``_pytest.terminal.flatten`` function in favor of
|
|
``more_itertools.collapse``. (`#3330
|
|
<https://github.com/pytest-dev/pytest/issues/3330>`_)
|
|
|
|
- Import some modules from ``collections.abc`` instead of ``collections`` as
|
|
the former modules trigger ``DeprecationWarning`` in Python 3.7. (`#3339
|
|
<https://github.com/pytest-dev/pytest/issues/3339>`_)
|
|
|
|
- record_property is no longer experimental, removing the warnings was
|
|
forgotten. (`#3360 <https://github.com/pytest-dev/pytest/issues/3360>`_)
|
|
|
|
- Mention in documentation and CLI help that fixtures with leading ``_`` are
|
|
printed by ``pytest --fixtures`` only if the ``-v`` option is added. (`#3398
|
|
<https://github.com/pytest-dev/pytest/issues/3398>`_)
|
|
|
|
|
|
pytest 3.5.0 (2018-03-21)
|
|
=========================
|
|
|
|
Deprecations and Removals
|
|
-------------------------
|
|
|
|
- ``record_xml_property`` fixture is now deprecated in favor of the more
|
|
generic ``record_property``. (`#2770
|
|
<https://github.com/pytest-dev/pytest/issues/2770>`_)
|
|
|
|
- Defining ``pytest_plugins`` is now deprecated in non-top-level conftest.py
|
|
files, because they "leak" to the entire directory tree. (`#3084
|
|
<https://github.com/pytest-dev/pytest/issues/3084>`_)
|
|
|
|
|
|
Features
|
|
--------
|
|
|
|
- New ``--show-capture`` command-line option that allows to specify how to
|
|
display captured output when tests fail: ``no``, ``stdout``, ``stderr``,
|
|
``log`` or ``all`` (the default). (`#1478
|
|
<https://github.com/pytest-dev/pytest/issues/1478>`_)
|
|
|
|
- New ``--rootdir`` command-line option to override the rules for discovering
|
|
the root directory. See `customize
|
|
<https://docs.pytest.org/en/latest/customize.html>`_ in the documentation for
|
|
details. (`#1642 <https://github.com/pytest-dev/pytest/issues/1642>`_)
|
|
|
|
- Fixtures are now instantiated based on their scopes, with higher-scoped
|
|
fixtures (such as ``session``) being instantiated first than lower-scoped
|
|
fixtures (such as ``function``). The relative order of fixtures of the same
|
|
scope is kept unchanged, based in their declaration order and their
|
|
dependencies. (`#2405 <https://github.com/pytest-dev/pytest/issues/2405>`_)
|
|
|
|
- ``record_xml_property`` renamed to ``record_property`` and is now compatible
|
|
with xdist, markers and any reporter. ``record_xml_property`` name is now
|
|
deprecated. (`#2770 <https://github.com/pytest-dev/pytest/issues/2770>`_)
|
|
|
|
- New ``--nf``, ``--new-first`` options: run new tests first followed by the
|
|
rest of the tests, in both cases tests are also sorted by the file modified
|
|
time, with more recent files coming first. (`#3034
|
|
<https://github.com/pytest-dev/pytest/issues/3034>`_)
|
|
|
|
- New ``--last-failed-no-failures`` command-line option that allows to specify
|
|
the behavior of the cache plugin's ```--last-failed`` feature when no tests
|
|
failed in the last run (or no cache was found): ``none`` or ``all`` (the
|
|
default). (`#3139 <https://github.com/pytest-dev/pytest/issues/3139>`_)
|
|
|
|
- New ``--doctest-continue-on-failure`` command-line option to enable doctests
|
|
to show multiple failures for each snippet, instead of stopping at the first
|
|
failure. (`#3149 <https://github.com/pytest-dev/pytest/issues/3149>`_)
|
|
|
|
- Captured log messages are added to the ``<system-out>`` tag in the generated
|
|
junit xml file if the ``junit_logging`` ini option is set to ``system-out``.
|
|
If the value of this ini option is ``system-err``, the logs are written to
|
|
``<system-err>``. The default value for ``junit_logging`` is ``no``, meaning
|
|
captured logs are not written to the output file. (`#3156
|
|
<https://github.com/pytest-dev/pytest/issues/3156>`_)
|
|
|
|
- Allow the logging plugin to handle ``pytest_runtest_logstart`` and
|
|
``pytest_runtest_logfinish`` hooks when live logs are enabled. (`#3189
|
|
<https://github.com/pytest-dev/pytest/issues/3189>`_)
|
|
|
|
- Passing ``--log-cli-level`` in the command-line now automatically activates
|
|
live logging. (`#3190 <https://github.com/pytest-dev/pytest/issues/3190>`_)
|
|
|
|
- Add command line option ``--deselect`` to allow deselection of individual
|
|
tests at collection time. (`#3198
|
|
<https://github.com/pytest-dev/pytest/issues/3198>`_)
|
|
|
|
- Captured logs are printed before entering pdb. (`#3204
|
|
<https://github.com/pytest-dev/pytest/issues/3204>`_)
|
|
|
|
- Deselected item count is now shown before tests are run, e.g. ``collected X
|
|
items / Y deselected``. (`#3213
|
|
<https://github.com/pytest-dev/pytest/issues/3213>`_)
|
|
|
|
- The builtin module ``platform`` is now available for use in expressions in
|
|
``pytest.mark``. (`#3236
|
|
<https://github.com/pytest-dev/pytest/issues/3236>`_)
|
|
|
|
- The *short test summary info* section now is displayed after tracebacks and
|
|
warnings in the terminal. (`#3255
|
|
<https://github.com/pytest-dev/pytest/issues/3255>`_)
|
|
|
|
- New ``--verbosity`` flag to set verbosity level explicitly. (`#3296
|
|
<https://github.com/pytest-dev/pytest/issues/3296>`_)
|
|
|
|
- ``pytest.approx`` now accepts comparing a numpy array with a scalar. (`#3312
|
|
<https://github.com/pytest-dev/pytest/issues/3312>`_)
|
|
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Suppress ``IOError`` when closing the temporary file used for capturing
|
|
streams in Python 2.7. (`#2370
|
|
<https://github.com/pytest-dev/pytest/issues/2370>`_)
|
|
|
|
- Fixed ``clear()`` method on ``caplog`` fixture which cleared ``records``, but
|
|
not the ``text`` property. (`#3297
|
|
<https://github.com/pytest-dev/pytest/issues/3297>`_)
|
|
|
|
- During test collection, when stdin is not allowed to be read, the
|
|
``DontReadFromStdin`` object still allow itself to be iterable and resolved
|
|
to an iterator without crashing. (`#3314
|
|
<https://github.com/pytest-dev/pytest/issues/3314>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Added a `reference <https://docs.pytest.org/en/latest/reference.html>`_ page
|
|
to the docs. (`#1713 <https://github.com/pytest-dev/pytest/issues/1713>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Change minimum requirement of ``attrs`` to ``17.4.0``. (`#3228
|
|
<https://github.com/pytest-dev/pytest/issues/3228>`_)
|
|
|
|
- Renamed example directories so all tests pass when ran from the base
|
|
directory. (`#3245 <https://github.com/pytest-dev/pytest/issues/3245>`_)
|
|
|
|
- Internal ``mark.py`` module has been turned into a package. (`#3250
|
|
<https://github.com/pytest-dev/pytest/issues/3250>`_)
|
|
|
|
- ``pytest`` now depends on the `more-itertools
|
|
<https://github.com/erikrose/more-itertools>`_ package. (`#3265
|
|
<https://github.com/pytest-dev/pytest/issues/3265>`_)
|
|
|
|
- Added warning when ``[pytest]`` section is used in a ``.cfg`` file passed
|
|
with ``-c`` (`#3268 <https://github.com/pytest-dev/pytest/issues/3268>`_)
|
|
|
|
- ``nodeids`` can now be passed explicitly to ``FSCollector`` and ``Node``
|
|
constructors. (`#3291 <https://github.com/pytest-dev/pytest/issues/3291>`_)
|
|
|
|
- Internal refactoring of ``FormattedExcinfo`` to use ``attrs`` facilities and
|
|
remove old support code for legacy Python versions. (`#3292
|
|
<https://github.com/pytest-dev/pytest/issues/3292>`_)
|
|
|
|
- Refactoring to unify how verbosity is handled internally. (`#3296
|
|
<https://github.com/pytest-dev/pytest/issues/3296>`_)
|
|
|
|
- Internal refactoring to better integrate with argparse. (`#3304
|
|
<https://github.com/pytest-dev/pytest/issues/3304>`_)
|
|
|
|
- Fix a python example when calling a fixture in doc/en/usage.rst (`#3308
|
|
<https://github.com/pytest-dev/pytest/issues/3308>`_)
|
|
|
|
|
|
pytest 3.4.2 (2018-03-04)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Removed progress information when capture option is ``no``. (`#3203
|
|
<https://github.com/pytest-dev/pytest/issues/3203>`_)
|
|
|
|
- Refactor check of bindir from ``exists`` to ``isdir``. (`#3241
|
|
<https://github.com/pytest-dev/pytest/issues/3241>`_)
|
|
|
|
- Fix ``TypeError`` issue when using ``approx`` with a ``Decimal`` value.
|
|
(`#3247 <https://github.com/pytest-dev/pytest/issues/3247>`_)
|
|
|
|
- Fix reference cycle generated when using the ``request`` fixture. (`#3249
|
|
<https://github.com/pytest-dev/pytest/issues/3249>`_)
|
|
|
|
- ``[tool:pytest]`` sections in ``*.cfg`` files passed by the ``-c`` option are
|
|
now properly recognized. (`#3260
|
|
<https://github.com/pytest-dev/pytest/issues/3260>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Add logging plugin to plugins list. (`#3209
|
|
<https://github.com/pytest-dev/pytest/issues/3209>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Fix minor typo in fixture.rst (`#3259
|
|
<https://github.com/pytest-dev/pytest/issues/3259>`_)
|
|
|
|
|
|
pytest 3.4.1 (2018-02-20)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Move import of ``doctest.UnexpectedException`` to top-level to avoid possible
|
|
errors when using ``--pdb``. (`#1810
|
|
<https://github.com/pytest-dev/pytest/issues/1810>`_)
|
|
|
|
- Added printing of captured stdout/stderr before entering pdb, and improved a
|
|
test which was giving false negatives about output capturing. (`#3052
|
|
<https://github.com/pytest-dev/pytest/issues/3052>`_)
|
|
|
|
- Fix ordering of tests using parametrized fixtures which can lead to fixtures
|
|
being created more than necessary. (`#3161
|
|
<https://github.com/pytest-dev/pytest/issues/3161>`_)
|
|
|
|
- Fix bug where logging happening at hooks outside of "test run" hooks would
|
|
cause an internal error. (`#3184
|
|
<https://github.com/pytest-dev/pytest/issues/3184>`_)
|
|
|
|
- Detect arguments injected by ``unittest.mock.patch`` decorator correctly when
|
|
pypi ``mock.patch`` is installed and imported. (`#3206
|
|
<https://github.com/pytest-dev/pytest/issues/3206>`_)
|
|
|
|
- Errors shown when a ``pytest.raises()`` with ``match=`` fails are now cleaner
|
|
on what happened: When no exception was raised, the "matching '...'" part got
|
|
removed as it falsely implies that an exception was raised but it didn't
|
|
match. When a wrong exception was raised, it's now thrown (like
|
|
``pytest.raised()`` without ``match=`` would) instead of complaining about
|
|
the unmatched text. (`#3222
|
|
<https://github.com/pytest-dev/pytest/issues/3222>`_)
|
|
|
|
- Fixed output capture handling in doctests on macOS. (`#985
|
|
<https://github.com/pytest-dev/pytest/issues/985>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Add Sphinx parameter docs for ``match`` and ``message`` args to
|
|
``pytest.raises``. (`#3202
|
|
<https://github.com/pytest-dev/pytest/issues/3202>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- pytest has changed the publication procedure and is now being published to
|
|
PyPI directly from Travis. (`#3060
|
|
<https://github.com/pytest-dev/pytest/issues/3060>`_)
|
|
|
|
- Rename ``ParameterSet._for_parameterize()`` to ``_for_parametrize()`` in
|
|
order to comply with the naming convention. (`#3166
|
|
<https://github.com/pytest-dev/pytest/issues/3166>`_)
|
|
|
|
- Skip failing pdb/doctest test on mac. (`#985
|
|
<https://github.com/pytest-dev/pytest/issues/985>`_)
|
|
|
|
|
|
pytest 3.4.0 (2018-01-30)
|
|
=========================
|
|
|
|
Deprecations and Removals
|
|
-------------------------
|
|
|
|
- All pytest classes now subclass ``object`` for better Python 2/3 compatibility.
|
|
This should not affect user code except in very rare edge cases. (`#2147
|
|
<https://github.com/pytest-dev/pytest/issues/2147>`_)
|
|
|
|
|
|
Features
|
|
--------
|
|
|
|
- Introduce ``empty_parameter_set_mark`` ini option to select which mark to
|
|
apply when ``@pytest.mark.parametrize`` is given an empty set of parameters.
|
|
Valid options are ``skip`` (default) and ``xfail``. Note that it is planned
|
|
to change the default to ``xfail`` in future releases as this is considered
|
|
less error prone. (`#2527
|
|
<https://github.com/pytest-dev/pytest/issues/2527>`_)
|
|
|
|
- **Incompatible change**: after community feedback the `logging
|
|
<https://docs.pytest.org/en/latest/logging.html>`_ functionality has
|
|
undergone some changes. Please consult the `logging documentation
|
|
<https://docs.pytest.org/en/latest/logging.html#incompatible-changes-in-pytest-3-4>`_
|
|
for details. (`#3013 <https://github.com/pytest-dev/pytest/issues/3013>`_)
|
|
|
|
- Console output falls back to "classic" mode when capturing is disabled (``-s``),
|
|
otherwise the output gets garbled to the point of being useless. (`#3038
|
|
<https://github.com/pytest-dev/pytest/issues/3038>`_)
|
|
|
|
- New `pytest_runtest_logfinish
|
|
<https://docs.pytest.org/en/latest/writing_plugins.html#_pytest.hookspec.pytest_runtest_logfinish>`_
|
|
hook which is called when a test item has finished executing, analogous to
|
|
`pytest_runtest_logstart
|
|
<https://docs.pytest.org/en/latest/writing_plugins.html#_pytest.hookspec.pytest_runtest_start>`_.
|
|
(`#3101 <https://github.com/pytest-dev/pytest/issues/3101>`_)
|
|
|
|
- Improve performance when collecting tests using many fixtures. (`#3107
|
|
<https://github.com/pytest-dev/pytest/issues/3107>`_)
|
|
|
|
- New ``caplog.get_records(when)`` method which provides access to the captured
|
|
records for the ``"setup"``, ``"call"`` and ``"teardown"``
|
|
testing stages. (`#3117 <https://github.com/pytest-dev/pytest/issues/3117>`_)
|
|
|
|
- New fixture ``record_xml_attribute`` that allows modifying and inserting
|
|
attributes on the ``<testcase>`` xml node in JUnit reports. (`#3130
|
|
<https://github.com/pytest-dev/pytest/issues/3130>`_)
|
|
|
|
- The default cache directory has been renamed from ``.cache`` to
|
|
``.pytest_cache`` after community feedback that the name ``.cache`` did not
|
|
make it clear that it was used by pytest. (`#3138
|
|
<https://github.com/pytest-dev/pytest/issues/3138>`_)
|
|
|
|
- Colorize the levelname column in the live-log output. (`#3142
|
|
<https://github.com/pytest-dev/pytest/issues/3142>`_)
|
|
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Fix hanging pexpect test on MacOS by using flush() instead of wait().
|
|
(`#2022 <https://github.com/pytest-dev/pytest/issues/2022>`_)
|
|
|
|
- Fix restoring Python state after in-process pytest runs with the
|
|
``pytester`` plugin; this may break tests using multiple inprocess
|
|
pytest runs if later ones depend on earlier ones leaking global interpreter
|
|
changes. (`#3016 <https://github.com/pytest-dev/pytest/issues/3016>`_)
|
|
|
|
- Fix skipping plugin reporting hook when test aborted before plugin setup
|
|
hook. (`#3074 <https://github.com/pytest-dev/pytest/issues/3074>`_)
|
|
|
|
- Fix progress percentage reported when tests fail during teardown. (`#3088
|
|
<https://github.com/pytest-dev/pytest/issues/3088>`_)
|
|
|
|
- **Incompatible change**: ``-o/--override`` option no longer eats all the
|
|
remaining options, which can lead to surprising behavior: for example,
|
|
``pytest -o foo=1 /path/to/test.py`` would fail because ``/path/to/test.py``
|
|
would be considered as part of the ``-o`` command-line argument. One
|
|
consequence of this is that now multiple configuration overrides need
|
|
multiple ``-o`` flags: ``pytest -o foo=1 -o bar=2``. (`#3103
|
|
<https://github.com/pytest-dev/pytest/issues/3103>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Document hooks (defined with ``historic=True``) which cannot be used with
|
|
``hookwrapper=True``. (`#2423
|
|
<https://github.com/pytest-dev/pytest/issues/2423>`_)
|
|
|
|
- Clarify that warning capturing doesn't change the warning filter by default.
|
|
(`#2457 <https://github.com/pytest-dev/pytest/issues/2457>`_)
|
|
|
|
- Clarify a possible confusion when using pytest_fixture_setup with fixture
|
|
functions that return None. (`#2698
|
|
<https://github.com/pytest-dev/pytest/issues/2698>`_)
|
|
|
|
- Fix the wording of a sentence on doctest flags used in pytest. (`#3076
|
|
<https://github.com/pytest-dev/pytest/issues/3076>`_)
|
|
|
|
- Prefer ``https://*.readthedocs.io`` over ``http://*.rtfd.org`` for links in
|
|
the documentation. (`#3092
|
|
<https://github.com/pytest-dev/pytest/issues/3092>`_)
|
|
|
|
- Improve readability (wording, grammar) of Getting Started guide (`#3131
|
|
<https://github.com/pytest-dev/pytest/issues/3131>`_)
|
|
|
|
- Added note that calling pytest.main multiple times from the same process is
|
|
not recommended because of import caching. (`#3143
|
|
<https://github.com/pytest-dev/pytest/issues/3143>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Show a simple and easy error when keyword expressions trigger a syntax error
|
|
(for example, ``"-k foo and import"`` will show an error that you can not use
|
|
the ``import`` keyword in expressions). (`#2953
|
|
<https://github.com/pytest-dev/pytest/issues/2953>`_)
|
|
|
|
- Change parametrized automatic test id generation to use the ``__name__``
|
|
attribute of functions instead of the fallback argument name plus counter.
|
|
(`#2976 <https://github.com/pytest-dev/pytest/issues/2976>`_)
|
|
|
|
- Replace py.std with stdlib imports. (`#3067
|
|
<https://github.com/pytest-dev/pytest/issues/3067>`_)
|
|
|
|
- Corrected 'you' to 'your' in logging docs. (`#3129
|
|
<https://github.com/pytest-dev/pytest/issues/3129>`_)
|
|
|
|
|
|
pytest 3.3.2 (2017-12-25)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- pytester: ignore files used to obtain current user metadata in the fd leak
|
|
detector. (`#2784 <https://github.com/pytest-dev/pytest/issues/2784>`_)
|
|
|
|
- Fix **memory leak** where objects returned by fixtures were never destructed
|
|
by the garbage collector. (`#2981
|
|
<https://github.com/pytest-dev/pytest/issues/2981>`_)
|
|
|
|
- Fix conversion of pyargs to filename to not convert symlinks on Python 2. (`#2985
|
|
<https://github.com/pytest-dev/pytest/issues/2985>`_)
|
|
|
|
- ``PYTEST_DONT_REWRITE`` is now checked for plugins too rather than only for
|
|
test modules. (`#2995 <https://github.com/pytest-dev/pytest/issues/2995>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Add clarifying note about behavior of multiple parametrized arguments (`#3001
|
|
<https://github.com/pytest-dev/pytest/issues/3001>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Code cleanup. (`#3015 <https://github.com/pytest-dev/pytest/issues/3015>`_,
|
|
`#3021 <https://github.com/pytest-dev/pytest/issues/3021>`_)
|
|
|
|
- Clean up code by replacing imports and references of ``_ast`` to ``ast``.
|
|
(`#3018 <https://github.com/pytest-dev/pytest/issues/3018>`_)
|
|
|
|
|
|
pytest 3.3.1 (2017-12-05)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Fix issue about ``-p no:<plugin>`` having no effect. (`#2920
|
|
<https://github.com/pytest-dev/pytest/issues/2920>`_)
|
|
|
|
- Fix regression with warnings that contained non-strings in their arguments in
|
|
Python 2. (`#2956 <https://github.com/pytest-dev/pytest/issues/2956>`_)
|
|
|
|
- Always escape null bytes when setting ``PYTEST_CURRENT_TEST``. (`#2957
|
|
<https://github.com/pytest-dev/pytest/issues/2957>`_)
|
|
|
|
- Fix ``ZeroDivisionError`` when using the ``testmon`` plugin when no tests
|
|
were actually collected. (`#2971
|
|
<https://github.com/pytest-dev/pytest/issues/2971>`_)
|
|
|
|
- Bring back ``TerminalReporter.writer`` as an alias to
|
|
``TerminalReporter._tw``. This alias was removed by accident in the ``3.3.0``
|
|
release. (`#2984 <https://github.com/pytest-dev/pytest/issues/2984>`_)
|
|
|
|
- The ``pytest-capturelog`` plugin is now also blacklisted, avoiding errors when
|
|
running pytest with it still installed. (`#3004
|
|
<https://github.com/pytest-dev/pytest/issues/3004>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Fix broken link to plugin ``pytest-localserver``. (`#2963
|
|
<https://github.com/pytest-dev/pytest/issues/2963>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Update github "bugs" link in ``CONTRIBUTING.rst`` (`#2949
|
|
<https://github.com/pytest-dev/pytest/issues/2949>`_)
|
|
|
|
|
|
pytest 3.3.0 (2017-11-23)
|
|
=========================
|
|
|
|
Deprecations and Removals
|
|
-------------------------
|
|
|
|
- pytest no longer supports Python **2.6** and **3.3**. Those Python versions
|
|
are EOL for some time now and incur maintenance and compatibility costs on
|
|
the pytest core team, and following up with the rest of the community we
|
|
decided that they will no longer be supported starting on this version. Users
|
|
which still require those versions should pin pytest to ``<3.3``. (`#2812
|
|
<https://github.com/pytest-dev/pytest/issues/2812>`_)
|
|
|
|
- Remove internal ``_preloadplugins()`` function. This removal is part of the
|
|
``pytest_namespace()`` hook deprecation. (`#2636
|
|
<https://github.com/pytest-dev/pytest/issues/2636>`_)
|
|
|
|
- Internally change ``CallSpec2`` to have a list of marks instead of a broken
|
|
mapping of keywords. This removes the keywords attribute of the internal
|
|
``CallSpec2`` class. (`#2672
|
|
<https://github.com/pytest-dev/pytest/issues/2672>`_)
|
|
|
|
- Remove ParameterSet.deprecated_arg_dict - its not a public api and the lack
|
|
of the underscore was a naming error. (`#2675
|
|
<https://github.com/pytest-dev/pytest/issues/2675>`_)
|
|
|
|
- Remove the internal multi-typed attribute ``Node._evalskip`` and replace it
|
|
with the boolean ``Node._skipped_by_mark``. (`#2767
|
|
<https://github.com/pytest-dev/pytest/issues/2767>`_)
|
|
|
|
- The ``params`` list passed to ``pytest.fixture`` is now for
|
|
all effects considered immutable and frozen at the moment of the ``pytest.fixture``
|
|
call. Previously the list could be changed before the first invocation of the fixture
|
|
allowing for a form of dynamic parametrization (for example, updated from command-line options),
|
|
but this was an unwanted implementation detail which complicated the internals and prevented
|
|
some internal cleanup. See issue `#2959 <https://github.com/pytest-dev/pytest/issues/2959>`_
|
|
for details and a recommended workaround.
|
|
|
|
Features
|
|
--------
|
|
|
|
- ``pytest_fixture_post_finalizer`` hook can now receive a ``request``
|
|
argument. (`#2124 <https://github.com/pytest-dev/pytest/issues/2124>`_)
|
|
|
|
- Replace the old introspection code in compat.py that determines the available
|
|
arguments of fixtures with inspect.signature on Python 3 and
|
|
funcsigs.signature on Python 2. This should respect ``__signature__``
|
|
declarations on functions. (`#2267
|
|
<https://github.com/pytest-dev/pytest/issues/2267>`_)
|
|
|
|
- Report tests with global ``pytestmark`` variable only once. (`#2549
|
|
<https://github.com/pytest-dev/pytest/issues/2549>`_)
|
|
|
|
- Now pytest displays the total progress percentage while running tests. The
|
|
previous output style can be set by configuring the ``console_output_style``
|
|
setting to ``classic``. (`#2657 <https://github.com/pytest-dev/pytest/issues/2657>`_)
|
|
|
|
- Match ``warns`` signature to ``raises`` by adding ``match`` keyword. (`#2708
|
|
<https://github.com/pytest-dev/pytest/issues/2708>`_)
|
|
|
|
- pytest now captures and displays output from the standard ``logging`` module.
|
|
The user can control the logging level to be captured by specifying options
|
|
in ``pytest.ini``, the command line and also during individual tests using
|
|
markers. Also, a ``caplog`` fixture is available that enables users to test
|
|
the captured log during specific tests (similar to ``capsys`` for example).
|
|
For more information, please see the `logging docs
|
|
<https://docs.pytest.org/en/latest/logging.html>`_. This feature was
|
|
introduced by merging the popular `pytest-catchlog
|
|
<https://pypi.org/project/pytest-catchlog/>`_ plugin, thanks to `Thomas Hisch
|
|
<https://github.com/thisch>`_. Be advised that during the merging the
|
|
backward compatibility interface with the defunct ``pytest-capturelog`` has
|
|
been dropped. (`#2794 <https://github.com/pytest-dev/pytest/issues/2794>`_)
|
|
|
|
- Add ``allow_module_level`` kwarg to ``pytest.skip()``, enabling to skip the
|
|
whole module. (`#2808 <https://github.com/pytest-dev/pytest/issues/2808>`_)
|
|
|
|
- Allow setting ``file_or_dir``, ``-c``, and ``-o`` in PYTEST_ADDOPTS. (`#2824
|
|
<https://github.com/pytest-dev/pytest/issues/2824>`_)
|
|
|
|
- Return stdout/stderr capture results as a ``namedtuple``, so ``out`` and
|
|
``err`` can be accessed by attribute. (`#2879
|
|
<https://github.com/pytest-dev/pytest/issues/2879>`_)
|
|
|
|
- Add ``capfdbinary``, a version of ``capfd`` which returns bytes from
|
|
``readouterr()``. (`#2923
|
|
<https://github.com/pytest-dev/pytest/issues/2923>`_)
|
|
|
|
- Add ``capsysbinary`` a version of ``capsys`` which returns bytes from
|
|
``readouterr()``. (`#2934
|
|
<https://github.com/pytest-dev/pytest/issues/2934>`_)
|
|
|
|
- Implement feature to skip ``setup.py`` files when run with
|
|
``--doctest-modules``. (`#502
|
|
<https://github.com/pytest-dev/pytest/issues/502>`_)
|
|
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Resume output capturing after ``capsys/capfd.disabled()`` context manager.
|
|
(`#1993 <https://github.com/pytest-dev/pytest/issues/1993>`_)
|
|
|
|
- ``pytest_fixture_setup`` and ``pytest_fixture_post_finalizer`` hooks are now
|
|
called for all ``conftest.py`` files. (`#2124
|
|
<https://github.com/pytest-dev/pytest/issues/2124>`_)
|
|
|
|
- If an exception happens while loading a plugin, pytest no longer hides the
|
|
original traceback. In Python 2 it will show the original traceback with a new
|
|
message that explains in which plugin. In Python 3 it will show 2 canonized
|
|
exceptions, the original exception while loading the plugin in addition to an
|
|
exception that pytest throws about loading a plugin. (`#2491
|
|
<https://github.com/pytest-dev/pytest/issues/2491>`_)
|
|
|
|
- ``capsys`` and ``capfd`` can now be used by other fixtures. (`#2709
|
|
<https://github.com/pytest-dev/pytest/issues/2709>`_)
|
|
|
|
- Internal ``pytester`` plugin properly encodes ``bytes`` arguments to
|
|
``utf-8``. (`#2738 <https://github.com/pytest-dev/pytest/issues/2738>`_)
|
|
|
|
- ``testdir`` now uses use the same method used by ``tmpdir`` to create its
|
|
temporary directory. This changes the final structure of the ``testdir``
|
|
directory slightly, but should not affect usage in normal scenarios and
|
|
avoids a number of potential problems. (`#2751
|
|
<https://github.com/pytest-dev/pytest/issues/2751>`_)
|
|
|
|
- pytest no longer complains about warnings with unicode messages being
|
|
non-ascii compatible even for ascii-compatible messages. As a result of this,
|
|
warnings with unicode messages are converted first to an ascii representation
|
|
for safety. (`#2809 <https://github.com/pytest-dev/pytest/issues/2809>`_)
|
|
|
|
- Change return value of pytest command when ``--maxfail`` is reached from
|
|
``2`` (interrupted) to ``1`` (failed). (`#2845
|
|
<https://github.com/pytest-dev/pytest/issues/2845>`_)
|
|
|
|
- Fix issue in assertion rewriting which could lead it to rewrite modules which
|
|
should not be rewritten. (`#2939
|
|
<https://github.com/pytest-dev/pytest/issues/2939>`_)
|
|
|
|
- Handle marks without description in ``pytest.ini``. (`#2942
|
|
<https://github.com/pytest-dev/pytest/issues/2942>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- pytest now depends on `attrs <https://pypi.org/project/attrs/>`_ for internal
|
|
structures to ease code maintainability. (`#2641
|
|
<https://github.com/pytest-dev/pytest/issues/2641>`_)
|
|
|
|
- Refactored internal Python 2/3 compatibility code to use ``six``. (`#2642
|
|
<https://github.com/pytest-dev/pytest/issues/2642>`_)
|
|
|
|
- Stop vendoring ``pluggy`` - we're missing out on its latest changes for not
|
|
much benefit (`#2719 <https://github.com/pytest-dev/pytest/issues/2719>`_)
|
|
|
|
- Internal refactor: simplify ascii string escaping by using the
|
|
backslashreplace error handler in newer Python 3 versions. (`#2734
|
|
<https://github.com/pytest-dev/pytest/issues/2734>`_)
|
|
|
|
- Remove unnecessary mark evaluator in unittest plugin (`#2767
|
|
<https://github.com/pytest-dev/pytest/issues/2767>`_)
|
|
|
|
- Calls to ``Metafunc.addcall`` now emit a deprecation warning. This function
|
|
is scheduled to be removed in ``pytest-4.0``. (`#2876
|
|
<https://github.com/pytest-dev/pytest/issues/2876>`_)
|
|
|
|
- Internal move of the parameterset extraction to a more maintainable place.
|
|
(`#2877 <https://github.com/pytest-dev/pytest/issues/2877>`_)
|
|
|
|
- Internal refactoring to simplify scope node lookup. (`#2910
|
|
<https://github.com/pytest-dev/pytest/issues/2910>`_)
|
|
|
|
- Configure ``pytest`` to prevent pip from installing pytest in unsupported
|
|
Python versions. (`#2922
|
|
<https://github.com/pytest-dev/pytest/issues/2922>`_)
|
|
|
|
|
|
pytest 3.2.5 (2017-11-15)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Remove ``py<1.5`` restriction from ``pytest`` as this can cause version
|
|
conflicts in some installations. (`#2926
|
|
<https://github.com/pytest-dev/pytest/issues/2926>`_)
|
|
|
|
|
|
pytest 3.2.4 (2017-11-13)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Fix the bug where running with ``--pyargs`` will result in items with
|
|
empty ``parent.nodeid`` if run from a different root directory. (`#2775
|
|
<https://github.com/pytest-dev/pytest/issues/2775>`_)
|
|
|
|
- Fix issue with ``@pytest.parametrize`` if argnames was specified as keyword arguments.
|
|
(`#2819 <https://github.com/pytest-dev/pytest/issues/2819>`_)
|
|
|
|
- Strip whitespace from marker names when reading them from INI config. (`#2856
|
|
<https://github.com/pytest-dev/pytest/issues/2856>`_)
|
|
|
|
- Show full context of doctest source in the pytest output, if the line number of
|
|
failed example in the docstring is < 9. (`#2882
|
|
<https://github.com/pytest-dev/pytest/issues/2882>`_)
|
|
|
|
- Match fixture paths against actual path segments in order to avoid matching folders which share a prefix.
|
|
(`#2836 <https://github.com/pytest-dev/pytest/issues/2836>`_)
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Introduce a dedicated section about conftest.py. (`#1505
|
|
<https://github.com/pytest-dev/pytest/issues/1505>`_)
|
|
|
|
- Explicitly mention ``xpass`` in the documentation of ``xfail``. (`#1997
|
|
<https://github.com/pytest-dev/pytest/issues/1997>`_)
|
|
|
|
- Append example for pytest.param in the example/parametrize document. (`#2658
|
|
<https://github.com/pytest-dev/pytest/issues/2658>`_)
|
|
|
|
- Clarify language of proposal for fixtures parameters (`#2893
|
|
<https://github.com/pytest-dev/pytest/issues/2893>`_)
|
|
|
|
- List python 3.6 in the documented supported versions in the getting started
|
|
document. (`#2903 <https://github.com/pytest-dev/pytest/issues/2903>`_)
|
|
|
|
- Clarify the documentation of available fixture scopes. (`#538
|
|
<https://github.com/pytest-dev/pytest/issues/538>`_)
|
|
|
|
- Add documentation about the ``python -m pytest`` invocation adding the
|
|
current directory to sys.path. (`#911
|
|
<https://github.com/pytest-dev/pytest/issues/911>`_)
|
|
|
|
|
|
pytest 3.2.3 (2017-10-03)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Fix crash in tab completion when no prefix is given. (`#2748
|
|
<https://github.com/pytest-dev/pytest/issues/2748>`_)
|
|
|
|
- The equality checking function (``__eq__``) of ``MarkDecorator`` returns
|
|
``False`` if one object is not an instance of ``MarkDecorator``. (`#2758
|
|
<https://github.com/pytest-dev/pytest/issues/2758>`_)
|
|
|
|
- When running ``pytest --fixtures-per-test``: don't crash if an item has no
|
|
_fixtureinfo attribute (e.g. doctests) (`#2788
|
|
<https://github.com/pytest-dev/pytest/issues/2788>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- In help text of ``-k`` option, add example of using ``not`` to not select
|
|
certain tests whose names match the provided expression. (`#1442
|
|
<https://github.com/pytest-dev/pytest/issues/1442>`_)
|
|
|
|
- Add note in ``parametrize.rst`` about calling ``metafunc.parametrize``
|
|
multiple times. (`#1548 <https://github.com/pytest-dev/pytest/issues/1548>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Set ``xfail_strict=True`` in pytest's own test suite to catch expected
|
|
failures as soon as they start to pass. (`#2722
|
|
<https://github.com/pytest-dev/pytest/issues/2722>`_)
|
|
|
|
- Fix typo in example of passing a callable to markers (in example/markers.rst)
|
|
(`#2765 <https://github.com/pytest-dev/pytest/issues/2765>`_)
|
|
|
|
|
|
pytest 3.2.2 (2017-09-06)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Calling the deprecated ``request.getfuncargvalue()`` now shows the source of
|
|
the call. (`#2681 <https://github.com/pytest-dev/pytest/issues/2681>`_)
|
|
|
|
- Allow tests declared as ``@staticmethod`` to use fixtures. (`#2699
|
|
<https://github.com/pytest-dev/pytest/issues/2699>`_)
|
|
|
|
- Fixed edge-case during collection: attributes which raised ``pytest.fail``
|
|
when accessed would abort the entire collection. (`#2707
|
|
<https://github.com/pytest-dev/pytest/issues/2707>`_)
|
|
|
|
- Fix ``ReprFuncArgs`` with mixed unicode and UTF-8 args. (`#2731
|
|
<https://github.com/pytest-dev/pytest/issues/2731>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- In examples on working with custom markers, add examples demonstrating the
|
|
usage of ``pytest.mark.MARKER_NAME.with_args`` in comparison with
|
|
``pytest.mark.MARKER_NAME.__call__`` (`#2604
|
|
<https://github.com/pytest-dev/pytest/issues/2604>`_)
|
|
|
|
- In one of the simple examples, use ``pytest_collection_modifyitems()`` to skip
|
|
tests based on a command-line option, allowing its sharing while preventing a
|
|
user error when acessing ``pytest.config`` before the argument parsing.
|
|
(`#2653 <https://github.com/pytest-dev/pytest/issues/2653>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Fixed minor error in 'Good Practices/Manual Integration' code snippet.
|
|
(`#2691 <https://github.com/pytest-dev/pytest/issues/2691>`_)
|
|
|
|
- Fixed typo in goodpractices.rst. (`#2721
|
|
<https://github.com/pytest-dev/pytest/issues/2721>`_)
|
|
|
|
- Improve user guidance regarding ``--resultlog`` deprecation. (`#2739
|
|
<https://github.com/pytest-dev/pytest/issues/2739>`_)
|
|
|
|
|
|
pytest 3.2.1 (2017-08-08)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Fixed small terminal glitch when collecting a single test item. (`#2579
|
|
<https://github.com/pytest-dev/pytest/issues/2579>`_)
|
|
|
|
- Correctly consider ``/`` as the file separator to automatically mark plugin
|
|
files for rewrite on Windows. (`#2591 <https://github.com/pytest-
|
|
dev/pytest/issues/2591>`_)
|
|
|
|
- Properly escape test names when setting ``PYTEST_CURRENT_TEST`` environment
|
|
variable. (`#2644 <https://github.com/pytest-dev/pytest/issues/2644>`_)
|
|
|
|
- Fix error on Windows and Python 3.6+ when ``sys.stdout`` has been replaced
|
|
with a stream-like object which does not implement the full ``io`` module
|
|
buffer protocol. In particular this affects ``pytest-xdist`` users on the
|
|
aforementioned platform. (`#2666 <https://github.com/pytest-
|
|
dev/pytest/issues/2666>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Explicitly document which pytest features work with ``unittest``. (`#2626
|
|
<https://github.com/pytest-dev/pytest/issues/2626>`_)
|
|
|
|
|
|
pytest 3.2.0 (2017-07-30)
|
|
=========================
|
|
|
|
Deprecations and Removals
|
|
-------------------------
|
|
|
|
- ``pytest.approx`` no longer supports ``>``, ``>=``, ``<`` and ``<=``
|
|
operators to avoid surprising/inconsistent behavior. See `the approx docs
|
|
<https://docs.pytest.org/en/latest/builtin.html#pytest.approx>`_ for more
|
|
information. (`#2003 <https://github.com/pytest-dev/pytest/issues/2003>`_)
|
|
|
|
- All old-style specific behavior in current classes in the pytest's API is
|
|
considered deprecated at this point and will be removed in a future release.
|
|
This affects Python 2 users only and in rare situations. (`#2147
|
|
<https://github.com/pytest-dev/pytest/issues/2147>`_)
|
|
|
|
- A deprecation warning is now raised when using marks for parameters
|
|
in ``pytest.mark.parametrize``. Use ``pytest.param`` to apply marks to
|
|
parameters instead. (`#2427 <https://github.com/pytest-dev/pytest/issues/2427>`_)
|
|
|
|
|
|
Features
|
|
--------
|
|
|
|
- Add support for numpy arrays (and dicts) to approx. (`#1994
|
|
<https://github.com/pytest-dev/pytest/issues/1994>`_)
|
|
|
|
- Now test function objects have a ``pytestmark`` attribute containing a list
|
|
of marks applied directly to the test function, as opposed to marks inherited
|
|
from parent classes or modules. (`#2516 <https://github.com/pytest-
|
|
dev/pytest/issues/2516>`_)
|
|
|
|
- Collection ignores local virtualenvs by default; ``--collect-in-virtualenv``
|
|
overrides this behavior. (`#2518 <https://github.com/pytest-
|
|
dev/pytest/issues/2518>`_)
|
|
|
|
- Allow class methods decorated as ``@staticmethod`` to be candidates for
|
|
collection as a test function. (Only for Python 2.7 and above. Python 2.6
|
|
will still ignore static methods.) (`#2528 <https://github.com/pytest-
|
|
dev/pytest/issues/2528>`_)
|
|
|
|
- Introduce ``mark.with_args`` in order to allow passing functions/classes as
|
|
sole argument to marks. (`#2540 <https://github.com/pytest-
|
|
dev/pytest/issues/2540>`_)
|
|
|
|
- New ``cache_dir`` ini option: sets the directory where the contents of the
|
|
cache plugin are stored. Directory may be relative or absolute path: if relative path, then
|
|
directory is created relative to ``rootdir``, otherwise it is used as is.
|
|
Additionally path may contain environment variables which are expanded during
|
|
runtime. (`#2543 <https://github.com/pytest-dev/pytest/issues/2543>`_)
|
|
|
|
- Introduce the ``PYTEST_CURRENT_TEST`` environment variable that is set with
|
|
the ``nodeid`` and stage (``setup``, ``call`` and ``teardown``) of the test
|
|
being currently executed. See the `documentation
|
|
<https://docs.pytest.org/en/latest/example/simple.html#pytest-current-test-
|
|
environment-variable>`_ for more info. (`#2583 <https://github.com/pytest-
|
|
dev/pytest/issues/2583>`_)
|
|
|
|
- Introduced ``@pytest.mark.filterwarnings`` mark which allows overwriting the
|
|
warnings filter on a per test, class or module level. See the `docs
|
|
<https://docs.pytest.org/en/latest/warnings.html#pytest-mark-
|
|
filterwarnings>`_ for more information. (`#2598 <https://github.com/pytest-
|
|
dev/pytest/issues/2598>`_)
|
|
|
|
- ``--last-failed`` now remembers forever when a test has failed and only
|
|
forgets it if it passes again. This makes it easy to fix a test suite by
|
|
selectively running files and fixing tests incrementally. (`#2621
|
|
<https://github.com/pytest-dev/pytest/issues/2621>`_)
|
|
|
|
- New ``pytest_report_collectionfinish`` hook which allows plugins to add
|
|
messages to the terminal reporting after collection has been finished
|
|
successfully. (`#2622 <https://github.com/pytest-dev/pytest/issues/2622>`_)
|
|
|
|
- Added support for `PEP-415's <https://www.python.org/dev/peps/pep-0415/>`_
|
|
``Exception.__suppress_context__``. Now if a ``raise exception from None`` is
|
|
caught by pytest, pytest will no longer chain the context in the test report.
|
|
The behavior now matches Python's traceback behavior. (`#2631
|
|
<https://github.com/pytest-dev/pytest/issues/2631>`_)
|
|
|
|
- Exceptions raised by ``pytest.fail``, ``pytest.skip`` and ``pytest.xfail``
|
|
now subclass BaseException, making them harder to be caught unintentionally
|
|
by normal code. (`#580 <https://github.com/pytest-dev/pytest/issues/580>`_)
|
|
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Set ``stdin`` to a closed ``PIPE`` in ``pytester.py.Testdir.popen()`` for
|
|
avoid unwanted interactive ``pdb`` (`#2023 <https://github.com/pytest-
|
|
dev/pytest/issues/2023>`_)
|
|
|
|
- Add missing ``encoding`` attribute to ``sys.std*`` streams when using
|
|
``capsys`` capture mode. (`#2375 <https://github.com/pytest-
|
|
dev/pytest/issues/2375>`_)
|
|
|
|
- Fix terminal color changing to black on Windows if ``colorama`` is imported
|
|
in a ``conftest.py`` file. (`#2510 <https://github.com/pytest-
|
|
dev/pytest/issues/2510>`_)
|
|
|
|
- Fix line number when reporting summary of skipped tests. (`#2548
|
|
<https://github.com/pytest-dev/pytest/issues/2548>`_)
|
|
|
|
- capture: ensure that EncodedFile.name is a string. (`#2555
|
|
<https://github.com/pytest-dev/pytest/issues/2555>`_)
|
|
|
|
- The options ``--fixtures`` and ``--fixtures-per-test`` will now keep
|
|
indentation within docstrings. (`#2574 <https://github.com/pytest-
|
|
dev/pytest/issues/2574>`_)
|
|
|
|
- doctests line numbers are now reported correctly, fixing `pytest-sugar#122
|
|
<https://github.com/Frozenball/pytest-sugar/issues/122>`_. (`#2610
|
|
<https://github.com/pytest-dev/pytest/issues/2610>`_)
|
|
|
|
- Fix non-determinism in order of fixture collection. Adds new dependency
|
|
(ordereddict) for Python 2.6. (`#920 <https://github.com/pytest-
|
|
dev/pytest/issues/920>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Clarify ``pytest_configure`` hook call order. (`#2539
|
|
<https://github.com/pytest-dev/pytest/issues/2539>`_)
|
|
|
|
- Extend documentation for testing plugin code with the ``pytester`` plugin.
|
|
(`#971 <https://github.com/pytest-dev/pytest/issues/971>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Update help message for ``--strict`` to make it clear it only deals with
|
|
unregistered markers, not warnings. (`#2444 <https://github.com/pytest-
|
|
dev/pytest/issues/2444>`_)
|
|
|
|
- Internal code move: move code for pytest.approx/pytest.raises to own files in
|
|
order to cut down the size of python.py (`#2489 <https://github.com/pytest-
|
|
dev/pytest/issues/2489>`_)
|
|
|
|
- Renamed the utility function ``_pytest.compat._escape_strings`` to
|
|
``_ascii_escaped`` to better communicate the function's purpose. (`#2533
|
|
<https://github.com/pytest-dev/pytest/issues/2533>`_)
|
|
|
|
- Improve error message for CollectError with skip/skipif. (`#2546
|
|
<https://github.com/pytest-dev/pytest/issues/2546>`_)
|
|
|
|
- Emit warning about ``yield`` tests being deprecated only once per generator.
|
|
(`#2562 <https://github.com/pytest-dev/pytest/issues/2562>`_)
|
|
|
|
- Ensure final collected line doesn't include artifacts of previous write.
|
|
(`#2571 <https://github.com/pytest-dev/pytest/issues/2571>`_)
|
|
|
|
- Fixed all flake8 errors and warnings. (`#2581 <https://github.com/pytest-
|
|
dev/pytest/issues/2581>`_)
|
|
|
|
- Added ``fix-lint`` tox environment to run automatic pep8 fixes on the code.
|
|
(`#2582 <https://github.com/pytest-dev/pytest/issues/2582>`_)
|
|
|
|
- Turn warnings into errors in pytest's own test suite in order to catch
|
|
regressions due to deprecations more promptly. (`#2588
|
|
<https://github.com/pytest-dev/pytest/issues/2588>`_)
|
|
|
|
- Show multiple issue links in CHANGELOG entries. (`#2620
|
|
<https://github.com/pytest-dev/pytest/issues/2620>`_)
|
|
|
|
|
|
pytest 3.1.3 (2017-07-03)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Fix decode error in Python 2 for doctests in docstrings. (`#2434
|
|
<https://github.com/pytest-dev/pytest/issues/2434>`_)
|
|
|
|
- Exceptions raised during teardown by finalizers are now suppressed until all
|
|
finalizers are called, with the initial exception reraised. (`#2440
|
|
<https://github.com/pytest-dev/pytest/issues/2440>`_)
|
|
|
|
- Fix incorrect "collected items" report when specifying tests on the command-
|
|
line. (`#2464 <https://github.com/pytest-dev/pytest/issues/2464>`_)
|
|
|
|
- ``deprecated_call`` in context-manager form now captures deprecation warnings
|
|
even if the same warning has already been raised. Also, ``deprecated_call``
|
|
will always produce the same error message (previously it would produce
|
|
different messages in context-manager vs. function-call mode). (`#2469
|
|
<https://github.com/pytest-dev/pytest/issues/2469>`_)
|
|
|
|
- Fix issue where paths collected by pytest could have triple leading ``/``
|
|
characters. (`#2475 <https://github.com/pytest-dev/pytest/issues/2475>`_)
|
|
|
|
- Fix internal error when trying to detect the start of a recursive traceback.
|
|
(`#2486 <https://github.com/pytest-dev/pytest/issues/2486>`_)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Explicitly state for which hooks the calls stop after the first non-None
|
|
result. (`#2493 <https://github.com/pytest-dev/pytest/issues/2493>`_)
|
|
|
|
|
|
Trivial/Internal Changes
|
|
------------------------
|
|
|
|
- Create invoke tasks for updating the vendored packages. (`#2474
|
|
<https://github.com/pytest-dev/pytest/issues/2474>`_)
|
|
|
|
- Update copyright dates in LICENSE, README.rst and in the documentation.
|
|
(`#2499 <https://github.com/pytest-dev/pytest/issues/2499>`_)
|
|
|
|
|
|
pytest 3.1.2 (2017-06-08)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- Required options added via ``pytest_addoption`` will no longer prevent using
|
|
--help without passing them. (#1999)
|
|
|
|
- Respect ``python_files`` in assertion rewriting. (#2121)
|
|
|
|
- Fix recursion error detection when frames in the traceback contain objects
|
|
that can't be compared (like ``numpy`` arrays). (#2459)
|
|
|
|
- ``UnicodeWarning`` is issued from the internal pytest warnings plugin only
|
|
when the message contains non-ascii unicode (Python 2 only). (#2463)
|
|
|
|
- Added a workaround for Python 3.6 ``WindowsConsoleIO`` breaking due to Pytests's
|
|
``FDCapture``. Other code using console handles might still be affected by the
|
|
very same issue and might require further workarounds/fixes, i.e. ``colorama``.
|
|
(#2467)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Fix internal API links to ``pluggy`` objects. (#2331)
|
|
|
|
- Make it clear that ``pytest.xfail`` stops test execution at the calling point
|
|
and improve overall flow of the ``skipping`` docs. (#810)
|
|
|
|
|
|
pytest 3.1.1 (2017-05-30)
|
|
=========================
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
- pytest warning capture no longer overrides existing warning filters. The
|
|
previous behaviour would override all filters and caused regressions in test
|
|
suites which configure warning filters to match their needs. Note that as a
|
|
side-effect of this is that ``DeprecationWarning`` and
|
|
``PendingDeprecationWarning`` are no longer shown by default. (#2430)
|
|
|
|
- Fix issue with non-ascii contents in doctest text files. (#2434)
|
|
|
|
- Fix encoding errors for unicode warnings in Python 2. (#2436)
|
|
|
|
- ``pytest.deprecated_call`` now captures ``PendingDeprecationWarning`` in
|
|
context manager form. (#2441)
|
|
|
|
|
|
Improved Documentation
|
|
----------------------
|
|
|
|
- Addition of towncrier for changelog management. (#2390)
|
|
|
|
|
|
3.1.0 (2017-05-22)
|
|
==================
|
|
|
|
|
|
New Features
|
|
------------
|
|
|
|
* The ``pytest-warnings`` plugin has been integrated into the core and now ``pytest`` automatically
|
|
captures and displays warnings at the end of the test session.
|
|
|
|
.. warning::
|
|
|
|
This feature may disrupt test suites which apply and treat warnings themselves, and can be
|
|
disabled in your ``pytest.ini``:
|
|
|
|
.. code-block:: ini
|
|
|
|
[pytest]
|
|
addopts = -p no:warnings
|
|
|
|
See the `warnings documentation page <https://docs.pytest.org/en/latest/warnings.html>`_ for more
|
|
information.
|
|
|
|
Thanks `@nicoddemus`_ for the PR.
|
|
|
|
* Added ``junit_suite_name`` ini option to specify root ``<testsuite>`` name for JUnit XML reports (`#533`_).
|
|
|
|
* Added an ini option ``doctest_encoding`` to specify which encoding to use for doctest files.
|
|
Thanks `@wheerd`_ for the PR (`#2101`_).
|
|
|
|
* ``pytest.warns`` now checks for subclass relationship rather than
|
|
class equality. Thanks `@lesteve`_ for the PR (`#2166`_)
|
|
|
|
* ``pytest.raises`` now asserts that the error message matches a text or regex
|
|
with the ``match`` keyword argument. Thanks `@Kriechi`_ for the PR.
|
|
|
|
* ``pytest.param`` can be used to declare test parameter sets with marks and test ids.
|
|
Thanks `@RonnyPfannschmidt`_ for the PR.
|
|
|
|
|
|
Changes
|
|
-------
|
|
|
|
* remove all internal uses of pytest_namespace hooks,
|
|
this is to prepare the removal of preloadconfig in pytest 4.0
|
|
Thanks to `@RonnyPfannschmidt`_ for the PR.
|
|
|
|
* pytest now warns when a callable ids raises in a parametrized test. Thanks `@fogo`_ for the PR.
|
|
|
|
* It is now possible to skip test classes from being collected by setting a
|
|
``__test__`` attribute to ``False`` in the class body (`#2007`_). Thanks
|
|
to `@syre`_ for the report and `@lwm`_ for the PR.
|
|
|
|
* Change junitxml.py to produce reports that comply with Junitxml schema.
|
|
If the same test fails with failure in call and then errors in teardown
|
|
we split testcase element into two, one containing the error and the other
|
|
the failure. (`#2228`_) Thanks to `@kkoukiou`_ for the PR.
|
|
|
|
* Testcase reports with a ``url`` attribute will now properly write this to junitxml.
|
|
Thanks `@fushi`_ for the PR (`#1874`_).
|
|
|
|
* Remove common items from dict comparison output when verbosity=1. Also update
|
|
the truncation message to make it clearer that pytest truncates all
|
|
assertion messages if verbosity < 2 (`#1512`_).
|
|
Thanks `@mattduck`_ for the PR
|
|
|
|
* ``--pdbcls`` no longer implies ``--pdb``. This makes it possible to use
|
|
``addopts=--pdbcls=module.SomeClass`` on ``pytest.ini``. Thanks `@davidszotten`_ for
|
|
the PR (`#1952`_).
|
|
|
|
* fix `#2013`_: turn RecordedWarning into ``namedtuple``,
|
|
to give it a comprehensible repr while preventing unwarranted modification.
|
|
|
|
* fix `#2208`_: ensure an iteration limit for _pytest.compat.get_real_func.
|
|
Thanks `@RonnyPfannschmidt`_ for the report and PR.
|
|
|
|
* Hooks are now verified after collection is complete, rather than right after loading installed plugins. This
|
|
makes it easy to write hooks for plugins which will be loaded during collection, for example using the
|
|
``pytest_plugins`` special variable (`#1821`_).
|
|
Thanks `@nicoddemus`_ for the PR.
|
|
|
|
* Modify ``pytest_make_parametrize_id()`` hook to accept ``argname`` as an
|
|
additional parameter.
|
|
Thanks `@unsignedint`_ for the PR.
|
|
|
|
* Add ``venv`` to the default ``norecursedirs`` setting.
|
|
Thanks `@The-Compiler`_ for the PR.
|
|
|
|
* ``PluginManager.import_plugin`` now accepts unicode plugin names in Python 2.
|
|
Thanks `@reutsharabani`_ for the PR.
|
|
|
|
* fix `#2308`_: When using both ``--lf`` and ``--ff``, only the last failed tests are run.
|
|
Thanks `@ojii`_ for the PR.
|
|
|
|
* Replace minor/patch level version numbers in the documentation with placeholders.
|
|
This significantly reduces change-noise as different contributors regnerate
|
|
the documentation on different platforms.
|
|
Thanks `@RonnyPfannschmidt`_ for the PR.
|
|
|
|
* fix `#2391`_: consider pytest_plugins on all plugin modules
|
|
Thanks `@RonnyPfannschmidt`_ for the PR.
|
|
|
|
|
|
Bug Fixes
|
|
---------
|
|
|
|
* Fix ``AttributeError`` on ``sys.stdout.buffer`` / ``sys.stderr.buffer``
|
|
while using ``capsys`` fixture in python 3. (`#1407`_).
|
|
Thanks to `@asottile`_.
|
|
|
|
* Change capture.py's ``DontReadFromInput`` class to throw ``io.UnsupportedOperation`` errors rather
|
|
than ValueErrors in the ``fileno`` method (`#2276`_).
|
|
Thanks `@metasyn`_ and `@vlad-dragos`_ for the PR.
|
|
|
|
* Fix exception formatting while importing modules when the exception message
|
|
contains non-ascii characters (`#2336`_).
|
|
Thanks `@fabioz`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Added documentation related to issue (`#1937`_)
|
|
Thanks `@skylarjhdownes`_ for the PR.
|
|
|
|
* Allow collecting files with any file extension as Python modules (`#2369`_).
|
|
Thanks `@Kodiologist`_ for the PR.
|
|
|
|
* Show the correct error message when collect "parametrize" func with wrong args (`#2383`_).
|
|
Thanks `@The-Compiler`_ for the report and `@robin0371`_ for the PR.
|
|
|
|
|
|
.. _@davidszotten: https://github.com/davidszotten
|
|
.. _@fabioz: https://github.com/fabioz
|
|
.. _@fogo: https://github.com/fogo
|
|
.. _@fushi: https://github.com/fushi
|
|
.. _@Kodiologist: https://github.com/Kodiologist
|
|
.. _@Kriechi: https://github.com/Kriechi
|
|
.. _@mandeep: https://github.com/mandeep
|
|
.. _@mattduck: https://github.com/mattduck
|
|
.. _@metasyn: https://github.com/metasyn
|
|
.. _@MichalTHEDUDE: https://github.com/MichalTHEDUDE
|
|
.. _@ojii: https://github.com/ojii
|
|
.. _@reutsharabani: https://github.com/reutsharabani
|
|
.. _@robin0371: https://github.com/robin0371
|
|
.. _@skylarjhdownes: https://github.com/skylarjhdownes
|
|
.. _@unsignedint: https://github.com/unsignedint
|
|
.. _@wheerd: https://github.com/wheerd
|
|
|
|
|
|
.. _#1407: https://github.com/pytest-dev/pytest/issues/1407
|
|
.. _#1512: https://github.com/pytest-dev/pytest/issues/1512
|
|
.. _#1821: https://github.com/pytest-dev/pytest/issues/1821
|
|
.. _#1874: https://github.com/pytest-dev/pytest/pull/1874
|
|
.. _#1937: https://github.com/pytest-dev/pytest/issues/1937
|
|
.. _#1952: https://github.com/pytest-dev/pytest/pull/1952
|
|
.. _#2007: https://github.com/pytest-dev/pytest/issues/2007
|
|
.. _#2013: https://github.com/pytest-dev/pytest/issues/2013
|
|
.. _#2101: https://github.com/pytest-dev/pytest/pull/2101
|
|
.. _#2166: https://github.com/pytest-dev/pytest/pull/2166
|
|
.. _#2208: https://github.com/pytest-dev/pytest/issues/2208
|
|
.. _#2228: https://github.com/pytest-dev/pytest/issues/2228
|
|
.. _#2276: https://github.com/pytest-dev/pytest/issues/2276
|
|
.. _#2308: https://github.com/pytest-dev/pytest/issues/2308
|
|
.. _#2336: https://github.com/pytest-dev/pytest/issues/2336
|
|
.. _#2369: https://github.com/pytest-dev/pytest/issues/2369
|
|
.. _#2383: https://github.com/pytest-dev/pytest/issues/2383
|
|
.. _#2391: https://github.com/pytest-dev/pytest/issues/2391
|
|
.. _#533: https://github.com/pytest-dev/pytest/issues/533
|
|
|
|
|
|
|
|
3.0.7 (2017-03-14)
|
|
==================
|
|
|
|
|
|
* Fix issue in assertion rewriting breaking due to modules silently discarding
|
|
other modules when importing fails
|
|
Notably, importing the ``anydbm`` module is fixed. (`#2248`_).
|
|
Thanks `@pfhayes`_ for the PR.
|
|
|
|
* junitxml: Fix problematic case where system-out tag occurred twice per testcase
|
|
element in the XML report. Thanks `@kkoukiou`_ for the PR.
|
|
|
|
* Fix regression, pytest now skips unittest correctly if run with ``--pdb``
|
|
(`#2137`_). Thanks to `@gst`_ for the report and `@mbyt`_ for the PR.
|
|
|
|
* Ignore exceptions raised from descriptors (e.g. properties) during Python test collection (`#2234`_).
|
|
Thanks to `@bluetech`_.
|
|
|
|
* ``--override-ini`` now correctly overrides some fundamental options like ``python_files`` (`#2238`_).
|
|
Thanks `@sirex`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Replace ``raise StopIteration`` usages in the code by simple ``returns`` to finish generators, in accordance to `PEP-479`_ (`#2160`_).
|
|
Thanks `@tgoodlet`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Fix internal errors when an unprintable ``AssertionError`` is raised inside a test.
|
|
Thanks `@omerhadari`_ for the PR.
|
|
|
|
* Skipping plugin now also works with test items generated by custom collectors (`#2231`_).
|
|
Thanks to `@vidartf`_.
|
|
|
|
* Fix trailing whitespace in console output if no .ini file presented (`#2281`_). Thanks `@fbjorn`_ for the PR.
|
|
|
|
* Conditionless ``xfail`` markers no longer rely on the underlying test item
|
|
being an instance of ``PyobjMixin``, and can therefore apply to tests not
|
|
collected by the built-in python test collector. Thanks `@barneygale`_ for the
|
|
PR.
|
|
|
|
|
|
.. _@pfhayes: https://github.com/pfhayes
|
|
.. _@bluetech: https://github.com/bluetech
|
|
.. _@gst: https://github.com/gst
|
|
.. _@sirex: https://github.com/sirex
|
|
.. _@vidartf: https://github.com/vidartf
|
|
.. _@kkoukiou: https://github.com/KKoukiou
|
|
.. _@omerhadari: https://github.com/omerhadari
|
|
.. _@fbjorn: https://github.com/fbjorn
|
|
|
|
.. _#2248: https://github.com/pytest-dev/pytest/issues/2248
|
|
.. _#2137: https://github.com/pytest-dev/pytest/issues/2137
|
|
.. _#2160: https://github.com/pytest-dev/pytest/issues/2160
|
|
.. _#2231: https://github.com/pytest-dev/pytest/issues/2231
|
|
.. _#2234: https://github.com/pytest-dev/pytest/issues/2234
|
|
.. _#2238: https://github.com/pytest-dev/pytest/issues/2238
|
|
.. _#2281: https://github.com/pytest-dev/pytest/issues/2281
|
|
|
|
.. _PEP-479: https://www.python.org/dev/peps/pep-0479/
|
|
|
|
|
|
3.0.6 (2017-01-22)
|
|
==================
|
|
|
|
* pytest no longer generates ``PendingDeprecationWarning`` from its own operations, which was introduced by mistake in version ``3.0.5`` (`#2118`_).
|
|
Thanks to `@nicoddemus`_ for the report and `@RonnyPfannschmidt`_ for the PR.
|
|
|
|
|
|
* pytest no longer recognizes coroutine functions as yield tests (`#2129`_).
|
|
Thanks to `@malinoff`_ for the PR.
|
|
|
|
* Plugins loaded by the ``PYTEST_PLUGINS`` environment variable are now automatically
|
|
considered for assertion rewriting (`#2185`_).
|
|
Thanks `@nicoddemus`_ for the PR.
|
|
|
|
* Improve error message when pytest.warns fails (`#2150`_). The type(s) of the
|
|
expected warnings and the list of caught warnings is added to the
|
|
error message. Thanks `@lesteve`_ for the PR.
|
|
|
|
* Fix ``pytester`` internal plugin to work correctly with latest versions of
|
|
``zope.interface`` (`#1989`_). Thanks `@nicoddemus`_ for the PR.
|
|
|
|
* Assert statements of the ``pytester`` plugin again benefit from assertion rewriting (`#1920`_).
|
|
Thanks `@RonnyPfannschmidt`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Specifying tests with colons like ``test_foo.py::test_bar`` for tests in
|
|
subdirectories with ini configuration files now uses the correct ini file
|
|
(`#2148`_). Thanks `@pelme`_.
|
|
|
|
* Fail ``testdir.runpytest().assert_outcomes()`` explicitly if the pytest
|
|
terminal output it relies on is missing. Thanks to `@eli-b`_ for the PR.
|
|
|
|
|
|
.. _@barneygale: https://github.com/barneygale
|
|
.. _@lesteve: https://github.com/lesteve
|
|
.. _@malinoff: https://github.com/malinoff
|
|
.. _@pelme: https://github.com/pelme
|
|
.. _@eli-b: https://github.com/eli-b
|
|
|
|
.. _#2118: https://github.com/pytest-dev/pytest/issues/2118
|
|
|
|
.. _#1989: https://github.com/pytest-dev/pytest/issues/1989
|
|
.. _#1920: https://github.com/pytest-dev/pytest/issues/1920
|
|
.. _#2129: https://github.com/pytest-dev/pytest/issues/2129
|
|
.. _#2148: https://github.com/pytest-dev/pytest/issues/2148
|
|
.. _#2150: https://github.com/pytest-dev/pytest/issues/2150
|
|
.. _#2185: https://github.com/pytest-dev/pytest/issues/2185
|
|
|
|
|
|
3.0.5 (2016-12-05)
|
|
==================
|
|
|
|
* Add warning when not passing ``option=value`` correctly to ``-o/--override-ini`` (`#2105`_).
|
|
Also improved the help documentation. Thanks to `@mbukatov`_ for the report and
|
|
`@lwm`_ for the PR.
|
|
|
|
* Now ``--confcutdir`` and ``--junit-xml`` are properly validated if they are directories
|
|
and filenames, respectively (`#2089`_ and `#2078`_). Thanks to `@lwm`_ for the PR.
|
|
|
|
* Add hint to error message hinting possible missing ``__init__.py`` (`#478`_). Thanks `@DuncanBetts`_.
|
|
|
|
* More accurately describe when fixture finalization occurs in documentation (`#687`_). Thanks `@DuncanBetts`_.
|
|
|
|
* Provide ``:ref:`` targets for ``recwarn.rst`` so we can use intersphinx referencing.
|
|
Thanks to `@dupuy`_ for the report and `@lwm`_ for the PR.
|
|
|
|
* In Python 2, use a simple ``+-`` ASCII string in the string representation of ``pytest.approx`` (for example ``"4 +- 4.0e-06"``)
|
|
because it is brittle to handle that in different contexts and representations internally in pytest
|
|
which can result in bugs such as `#2111`_. In Python 3, the representation still uses ``±`` (for example ``4 ± 4.0e-06``).
|
|
Thanks `@kerrick-lyft`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Using ``item.Function``, ``item.Module``, etc., is now issuing deprecation warnings, prefer
|
|
``pytest.Function``, ``pytest.Module``, etc., instead (`#2034`_).
|
|
Thanks `@nmundar`_ for the PR.
|
|
|
|
* Fix error message using ``approx`` with complex numbers (`#2082`_).
|
|
Thanks `@adler-j`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Fixed false-positives warnings from assertion rewrite hook for modules imported more than
|
|
once by the ``pytest_plugins`` mechanism.
|
|
Thanks `@nicoddemus`_ for the PR.
|
|
|
|
* Remove an internal cache which could cause hooks from ``conftest.py`` files in
|
|
sub-directories to be called in other directories incorrectly (`#2016`_).
|
|
Thanks `@d-b-w`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Remove internal code meant to support earlier Python 3 versions that produced the side effect
|
|
of leaving ``None`` in ``sys.modules`` when expressions were evaluated by pytest (for example passing a condition
|
|
as a string to ``pytest.mark.skipif``)(`#2103`_).
|
|
Thanks `@jaraco`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Cope gracefully with a .pyc file with no matching .py file (`#2038`_). Thanks
|
|
`@nedbat`_.
|
|
|
|
.. _@syre: https://github.com/syre
|
|
.. _@adler-j: https://github.com/adler-j
|
|
.. _@d-b-w: https://bitbucket.org/d-b-w/
|
|
.. _@DuncanBetts: https://github.com/DuncanBetts
|
|
.. _@dupuy: https://bitbucket.org/dupuy/
|
|
.. _@kerrick-lyft: https://github.com/kerrick-lyft
|
|
.. _@lwm: https://github.com/lwm
|
|
.. _@mbukatov: https://github.com/mbukatov
|
|
.. _@nedbat: https://github.com/nedbat
|
|
.. _@nmundar: https://github.com/nmundar
|
|
|
|
.. _#2016: https://github.com/pytest-dev/pytest/issues/2016
|
|
.. _#2034: https://github.com/pytest-dev/pytest/issues/2034
|
|
.. _#2038: https://github.com/pytest-dev/pytest/issues/2038
|
|
.. _#2078: https://github.com/pytest-dev/pytest/issues/2078
|
|
.. _#2082: https://github.com/pytest-dev/pytest/issues/2082
|
|
.. _#2089: https://github.com/pytest-dev/pytest/issues/2089
|
|
.. _#2103: https://github.com/pytest-dev/pytest/issues/2103
|
|
.. _#2105: https://github.com/pytest-dev/pytest/issues/2105
|
|
.. _#2111: https://github.com/pytest-dev/pytest/issues/2111
|
|
.. _#478: https://github.com/pytest-dev/pytest/issues/478
|
|
.. _#687: https://github.com/pytest-dev/pytest/issues/687
|
|
|
|
|
|
3.0.4 (2016-11-09)
|
|
==================
|
|
|
|
* Import errors when collecting test modules now display the full traceback (`#1976`_).
|
|
Thanks `@cwitty`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Fix confusing command-line help message for custom options with two or more ``metavar`` properties (`#2004`_).
|
|
Thanks `@okulynyak`_ and `@davehunt`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* When loading plugins, import errors which contain non-ascii messages are now properly handled in Python 2 (`#1998`_).
|
|
Thanks `@nicoddemus`_ for the PR.
|
|
|
|
* Fixed cyclic reference when ``pytest.raises`` is used in context-manager form (`#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 `@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 (`#2005`_).
|
|
Thanks `@RonnyPfannschmidt`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Report teardown output on test failure (`#442`_).
|
|
Thanks `@matclab`_ for the PR.
|
|
|
|
* Fix teardown error message in generated xUnit XML.
|
|
Thanks `@gdyuldin`_ for the PR.
|
|
|
|
* Properly handle exceptions in ``multiprocessing`` tasks (`#1984`_).
|
|
Thanks `@adborden`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Clean up unittest TestCase objects after tests are complete (`#1649`_).
|
|
Thanks `@d_b_w`_ for the report and PR.
|
|
|
|
|
|
.. _@adborden: https://github.com/adborden
|
|
.. _@cwitty: https://github.com/cwitty
|
|
.. _@d_b_w: https://github.com/d_b_w
|
|
.. _@gdyuldin: https://github.com/gdyuldin
|
|
.. _@matclab: https://github.com/matclab
|
|
.. _@MSeifert04: https://github.com/MSeifert04
|
|
.. _@okulynyak: https://github.com/okulynyak
|
|
|
|
.. _#442: https://github.com/pytest-dev/pytest/issues/442
|
|
.. _#1965: https://github.com/pytest-dev/pytest/issues/1965
|
|
.. _#1976: https://github.com/pytest-dev/pytest/issues/1976
|
|
.. _#1984: https://github.com/pytest-dev/pytest/issues/1984
|
|
.. _#1998: https://github.com/pytest-dev/pytest/issues/1998
|
|
.. _#2004: https://github.com/pytest-dev/pytest/issues/2004
|
|
.. _#2005: https://github.com/pytest-dev/pytest/issues/2005
|
|
.. _#1649: https://github.com/pytest-dev/pytest/issues/1649
|
|
|
|
|
|
3.0.3 (2016-09-28)
|
|
==================
|
|
|
|
* The ``ids`` argument to ``parametrize`` again accepts ``unicode`` strings
|
|
in Python 2 (`#1905`_).
|
|
Thanks `@philpep`_ for the report and `@nicoddemus`_ for the PR.
|
|
|
|
* Assertions are now being rewritten for plugins in development mode
|
|
(``pip install -e``) (`#1934`_).
|
|
Thanks `@nicoddemus`_ for the PR.
|
|
|
|
* Fix pkg_resources import error in Jython projects (`#1853`_).
|
|
Thanks `@raquel-ucl`_ for the PR.
|
|
|
|
* Got rid of ``AttributeError: 'Module' object has no attribute '_obj'`` exception
|
|
in Python 3 (`#1944`_).
|
|
Thanks `@axil`_ for the PR.
|
|
|
|
* Explain a bad scope value passed to ``@fixture`` declarations or
|
|
a ``MetaFunc.parametrize()`` call. Thanks `@tgoodlet`_ for the PR.
|
|
|
|
* This version includes ``pluggy-0.4.0``, which correctly handles
|
|
``VersionConflict`` errors in plugins (`#704`_).
|
|
Thanks `@nicoddemus`_ for the PR.
|
|
|
|
|
|
.. _@philpep: https://github.com/philpep
|
|
.. _@raquel-ucl: https://github.com/raquel-ucl
|
|
.. _@axil: https://github.com/axil
|
|
.. _@tgoodlet: https://github.com/tgoodlet
|
|
.. _@vlad-dragos: https://github.com/vlad-dragos
|
|
|
|
.. _#1853: https://github.com/pytest-dev/pytest/issues/1853
|
|
.. _#1905: https://github.com/pytest-dev/pytest/issues/1905
|
|
.. _#1934: https://github.com/pytest-dev/pytest/issues/1934
|
|
.. _#1944: https://github.com/pytest-dev/pytest/issues/1944
|
|
.. _#704: https://github.com/pytest-dev/pytest/issues/704
|
|
|
|
|
|
|
|
|
|
3.0.2 (2016-09-01)
|
|
==================
|
|
|
|
* 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 (2016-08-23)
|
|
==================
|
|
|
|
* 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 (2016-08-18)
|
|
==================
|
|
|
|
**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 (2016-05-31)
|
|
==================
|
|
|
|
**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 (2016-03-17)
|
|
==================
|
|
|
|
**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 (2016-02-29)
|
|
==================
|
|
|
|
**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.html#modifying-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
|
|
|
|
2.8.7 (2016-01-24)
|
|
==================
|
|
|
|
- fix #1338: use predictable object resolution for monkeypatch
|
|
|
|
2.8.6 (2016-01-21)
|
|
==================
|
|
|
|
- fix #1259: allow for double nodeids in junitxml,
|
|
this was a regression failing plugins combinations
|
|
like pytest-pep8 + pytest-flakes
|
|
|
|
- Workaround for exception that occurs in pyreadline when using
|
|
``--pdb`` with standard I/O capture enabled.
|
|
Thanks Erik M. Bray for the PR.
|
|
|
|
- fix #900: Better error message in case the target of a ``monkeypatch`` call
|
|
raises an ``ImportError``.
|
|
|
|
- fix #1292: monkeypatch calls (setattr, setenv, etc.) are now O(1).
|
|
Thanks David R. MacIver for the report and Bruno Oliveira for the PR.
|
|
|
|
- fix #1223: captured stdout and stderr are now properly displayed before
|
|
entering pdb when ``--pdb`` is used instead of being thrown away.
|
|
Thanks Cal Leeming for the PR.
|
|
|
|
- fix #1305: pytest warnings emitted during ``pytest_terminal_summary`` are now
|
|
properly displayed.
|
|
Thanks Ionel Maries Cristian for the report and Bruno Oliveira for the PR.
|
|
|
|
- fix #628: fixed internal UnicodeDecodeError when doctests contain unicode.
|
|
Thanks Jason R. Coombs for the report and Bruno Oliveira for the PR.
|
|
|
|
- fix #1334: Add captured stdout to jUnit XML report on setup error.
|
|
Thanks Georgy Dyuldin for the PR.
|
|
|
|
|
|
2.8.5 (2015-12-11)
|
|
==================
|
|
|
|
- fix #1243: fixed issue where class attributes injected during collection could break pytest.
|
|
PR by Alexei Kozlenok, thanks Ronny Pfannschmidt and Bruno Oliveira for the review and help.
|
|
|
|
- fix #1074: precompute junitxml chunks instead of storing the whole tree in objects
|
|
Thanks Bruno Oliveira for the report and Ronny Pfannschmidt for the PR
|
|
|
|
- fix #1238: fix ``pytest.deprecated_call()`` receiving multiple arguments
|
|
(Regression introduced in 2.8.4). Thanks Alex Gaynor for the report and
|
|
Bruno Oliveira for the PR.
|
|
|
|
|
|
2.8.4 (2015-12-06)
|
|
==================
|
|
|
|
- fix #1190: ``deprecated_call()`` now works when the deprecated
|
|
function has been already called by another test in the same
|
|
module. Thanks Mikhail Chernykh for the report and Bruno Oliveira for the
|
|
PR.
|
|
|
|
- fix #1198: ``--pastebin`` option now works on Python 3. Thanks
|
|
Mehdy Khoshnoody for the PR.
|
|
|
|
- fix #1219: ``--pastebin`` now works correctly when captured output contains
|
|
non-ascii characters. Thanks Bruno Oliveira for the PR.
|
|
|
|
- fix #1204: another error when collecting with a nasty __getattr__().
|
|
Thanks Florian Bruhin for the PR.
|
|
|
|
- fix the summary printed when no tests did run.
|
|
Thanks Florian Bruhin for the PR.
|
|
- fix #1185 - ensure MANIFEST.in exactly matches what should go to a sdist
|
|
|
|
- a number of documentation modernizations wrt good practices.
|
|
Thanks Bruno Oliveira for the PR.
|
|
|
|
2.8.3 (2015-11-18)
|
|
==================
|
|
|
|
- fix #1169: add __name__ attribute to testcases in TestCaseFunction to
|
|
support the @unittest.skip decorator on functions and methods.
|
|
Thanks Lee Kamentsky for the PR.
|
|
|
|
- fix #1035: collecting tests if test module level obj has __getattr__().
|
|
Thanks Suor for the report and Bruno Oliveira / Tom Viner for the PR.
|
|
|
|
- fix #331: don't collect tests if their failure cannot be reported correctly
|
|
e.g. they are a callable instance of a class.
|
|
|
|
- fix #1133: fixed internal error when filtering tracebacks where one entry
|
|
belongs to a file which is no longer available.
|
|
Thanks Bruno Oliveira for the PR.
|
|
|
|
- enhancement made to highlight in red the name of the failing tests so
|
|
they stand out in the output.
|
|
Thanks Gabriel Reis for the PR.
|
|
|
|
- add more talks to the documentation
|
|
- extend documentation on the --ignore cli option
|
|
- use pytest-runner for setuptools integration
|
|
- minor fixes for interaction with OS X El Capitan
|
|
system integrity protection (thanks Florian)
|
|
|
|
|
|
2.8.2 (2015-10-07)
|
|
==================
|
|
|
|
- fix #1085: proper handling of encoding errors when passing encoded byte
|
|
strings to pytest.parametrize in Python 2.
|
|
Thanks Themanwithoutaplan for the report and Bruno Oliveira for the PR.
|
|
|
|
- fix #1087: handling SystemError when passing empty byte strings to
|
|
pytest.parametrize in Python 3.
|
|
Thanks Paul Kehrer for the report and Bruno Oliveira for the PR.
|
|
|
|
- fix #995: fixed internal error when filtering tracebacks where one entry
|
|
was generated by an exec() statement.
|
|
Thanks Daniel Hahler, Ashley C Straw, Philippe Gauthier and Pavel Savchenko
|
|
for contributing and Bruno Oliveira for the PR.
|
|
|
|
- fix #1100 and #1057: errors when using autouse fixtures and doctest modules.
|
|
Thanks Sergey B Kirpichev and Vital Kudzelka for contributing and Bruno
|
|
Oliveira for the PR.
|
|
|
|
2.8.1 (2015-09-29)
|
|
==================
|
|
|
|
- fix #1034: Add missing nodeid on pytest_logwarning call in
|
|
addhook. Thanks Simon Gomizelj for the PR.
|
|
|
|
- 'deprecated_call' is now only satisfied with a DeprecationWarning or
|
|
PendingDeprecationWarning. Before 2.8.0, it accepted any warning, and 2.8.0
|
|
made it accept only DeprecationWarning (but not PendingDeprecationWarning).
|
|
Thanks Alex Gaynor for the issue and Eric Hunsberger for the PR.
|
|
|
|
- fix issue #1073: avoid calling __getattr__ on potential plugin objects.
|
|
This fixes an incompatibility with pytest-django. Thanks Andreas Pelme,
|
|
Bruno Oliveira and Ronny Pfannschmidt for contributing and Holger Krekel
|
|
for the fix.
|
|
|
|
- Fix issue #704: handle versionconflict during plugin loading more
|
|
gracefully. Thanks Bruno Oliveira for the PR.
|
|
|
|
- Fix issue #1064: ""--junitxml" regression when used with the
|
|
"pytest-xdist" plugin, with test reports being assigned to the wrong tests.
|
|
Thanks Daniel Grunwald for the report and Bruno Oliveira for the PR.
|
|
|
|
- (experimental) adapt more SEMVER style versioning and change meaning of
|
|
master branch in git repo: "master" branch now keeps the bugfixes, changes
|
|
aimed for micro releases. "features" branch will only be released
|
|
with minor or major pytest releases.
|
|
|
|
- Fix issue #766 by removing documentation references to distutils.
|
|
Thanks Russel Winder.
|
|
|
|
- Fix issue #1030: now byte-strings are escaped to produce item node ids
|
|
to make them always serializable.
|
|
Thanks Andy Freeland for the report and Bruno Oliveira for the PR.
|
|
|
|
- Python 2: if unicode parametrized values are convertible to ascii, their
|
|
ascii representation is used for the node id.
|
|
|
|
- Fix issue #411: Add __eq__ method to assertion comparison example.
|
|
Thanks Ben Webb.
|
|
- Fix issue #653: deprecated_call can be used as context manager.
|
|
|
|
- fix issue 877: properly handle assertion explanations with non-ascii repr
|
|
Thanks Mathieu Agopian for the report and Ronny Pfannschmidt for the PR.
|
|
|
|
- fix issue 1029: transform errors when writing cache values into pytest-warnings
|
|
|
|
2.8.0 (2015-09-18)
|
|
==================
|
|
|
|
- new ``--lf`` and ``-ff`` options to run only the last failing tests or
|
|
"failing tests first" from the last run. This functionality is provided
|
|
through porting the formerly external pytest-cache plugin into pytest core.
|
|
BACKWARD INCOMPAT: if you used pytest-cache's functionality to persist
|
|
data between test runs be aware that we don't serialize sets anymore.
|
|
Thanks Ronny Pfannschmidt for most of the merging work.
|
|
|
|
- "-r" option now accepts "a" to include all possible reports, similar
|
|
to passing "fEsxXw" explicitly (isse960).
|
|
Thanks Abhijeet Kasurde for the PR.
|
|
|
|
- avoid python3.5 deprecation warnings by introducing version
|
|
specific inspection helpers, thanks Michael Droettboom.
|
|
|
|
- fix issue562: @nose.tools.istest now fully respected.
|
|
|
|
- fix issue934: when string comparison fails and a diff is too large to display
|
|
without passing -vv, still show a few lines of the diff.
|
|
Thanks Florian Bruhin for the report and Bruno Oliveira for the PR.
|
|
|
|
- fix issue736: Fix a bug where fixture params would be discarded when combined
|
|
with parametrization markers.
|
|
Thanks to Markus Unterwaditzer for the PR.
|
|
|
|
- fix issue710: introduce ALLOW_UNICODE doctest option: when enabled, the
|
|
``u`` prefix is stripped from unicode strings in expected doctest output. This
|
|
allows doctests which use unicode to run in Python 2 and 3 unchanged.
|
|
Thanks Jason R. Coombs for the report and Bruno Oliveira for the PR.
|
|
|
|
- parametrize now also generates meaningful test IDs for enum, regex and class
|
|
objects (as opposed to class instances).
|
|
Thanks to Florian Bruhin for the PR.
|
|
|
|
- Add 'warns' to assert that warnings are thrown (like 'raises').
|
|
Thanks to Eric Hunsberger for the PR.
|
|
|
|
- Fix issue683: Do not apply an already applied mark. Thanks ojake for the PR.
|
|
|
|
- Deal with capturing failures better so fewer exceptions get lost to
|
|
/dev/null. Thanks David Szotten for the PR.
|
|
|
|
- fix issue730: deprecate and warn about the --genscript option.
|
|
Thanks Ronny Pfannschmidt for the report and Christian Pommranz for the PR.
|
|
|
|
- fix issue751: multiple parametrize with ids bug if it parametrizes class with
|
|
two or more test methods. Thanks Sergey Chipiga for reporting and Jan
|
|
Bednarik for PR.
|
|
|
|
- fix issue82: avoid loading conftest files from setup.cfg/pytest.ini/tox.ini
|
|
files and upwards by default (--confcutdir can still be set to override this).
|
|
Thanks Bruno Oliveira for the PR.
|
|
|
|
- fix issue768: docstrings found in python modules were not setting up session
|
|
fixtures. Thanks Jason R. Coombs for reporting and Bruno Oliveira for the PR.
|
|
|
|
- added ``tmpdir_factory``, a session-scoped fixture that can be used to create
|
|
directories under the base temporary directory. Previously this object was
|
|
installed as a ``_tmpdirhandler`` attribute of the ``config`` object, but now it
|
|
is part of the official API and using ``config._tmpdirhandler`` is
|
|
deprecated.
|
|
Thanks Bruno Oliveira for the PR.
|
|
|
|
- fix issue808: pytest's internal assertion rewrite hook now implements the
|
|
optional PEP302 get_data API so tests can access data files next to them.
|
|
Thanks xmo-odoo for request and example and Bruno Oliveira for
|
|
the PR.
|
|
|
|
- rootdir and inifile are now displayed during usage errors to help
|
|
users diagnose problems such as unexpected ini files which add
|
|
unknown options being picked up by pytest. Thanks to Pavel Savchenko for
|
|
bringing the problem to attention in #821 and Bruno Oliveira for the PR.
|
|
|
|
- Summary bar now is colored yellow for warning
|
|
situations such as: all tests either were skipped or xpass/xfailed,
|
|
or no tests were run at all (this is a partial fix for issue500).
|
|
|
|
- fix issue812: pytest now exits with status code 5 in situations where no
|
|
tests were run at all, such as the directory given in the command line does
|
|
not contain any tests or as result of a command line option filters
|
|
all out all tests (-k for example).
|
|
Thanks Eric Siegerman (issue812) and Bruno Oliveira for the PR.
|
|
|
|
- Summary bar now is colored yellow for warning
|
|
situations such as: all tests either were skipped or xpass/xfailed,
|
|
or no tests were run at all (related to issue500).
|
|
Thanks Eric Siegerman.
|
|
|
|
- New ``testpaths`` ini option: list of directories to search for tests
|
|
when executing pytest from the root directory. This can be used
|
|
to speed up test collection when a project has well specified directories
|
|
for tests, being usually more practical than configuring norecursedirs for
|
|
all directories that do not contain tests.
|
|
Thanks to Adrian for idea (#694) and Bruno Oliveira for the PR.
|
|
|
|
- fix issue713: JUnit XML reports for doctest failures.
|
|
Thanks Punyashloka Biswal.
|
|
|
|
- fix issue970: internal pytest warnings now appear as "pytest-warnings" in
|
|
the terminal instead of "warnings", so it is clear for users that those
|
|
warnings are from pytest and not from the builtin "warnings" module.
|
|
Thanks Bruno Oliveira.
|
|
|
|
- Include setup and teardown in junitxml test durations.
|
|
Thanks Janne Vanhala.
|
|
|
|
- fix issue735: assertion failures on debug versions of Python 3.4+
|
|
|
|
- new option ``--import-mode`` to allow to change test module importing
|
|
behaviour to append to sys.path instead of prepending. This better allows
|
|
to run test modules against installed versions of a package even if the
|
|
package under test has the same import root. In this example::
|
|
|
|
testing/__init__.py
|
|
testing/test_pkg_under_test.py
|
|
pkg_under_test/
|
|
|
|
the tests will run against the installed version
|
|
of pkg_under_test when ``--import-mode=append`` is used whereas
|
|
by default they would always pick up the local version. Thanks Holger Krekel.
|
|
|
|
- pytester: add method ``TmpTestdir.delete_loaded_modules()``, and call it
|
|
from ``inline_run()`` to allow temporary modules to be reloaded.
|
|
Thanks Eduardo Schettino.
|
|
|
|
- internally refactor pluginmanager API and code so that there
|
|
is a clear distinction between a pytest-agnostic rather simple
|
|
pluginmanager and the PytestPluginManager which adds a lot of
|
|
behaviour, among it handling of the local conftest files.
|
|
In terms of documented methods this is a backward compatible
|
|
change but it might still break 3rd party plugins which relied on
|
|
details like especially the pluginmanager.add_shutdown() API.
|
|
Thanks Holger Krekel.
|
|
|
|
- pluginmanagement: introduce ``pytest.hookimpl`` and
|
|
``pytest.hookspec`` decorators for setting impl/spec
|
|
specific parameters. This substitutes the previous
|
|
now deprecated use of ``pytest.mark`` which is meant to
|
|
contain markers for test functions only.
|
|
|
|
- write/refine docs for "writing plugins" which now have their
|
|
own page and are separate from the "using/installing plugins`` page.
|
|
|
|
- fix issue732: properly unregister plugins from any hook calling
|
|
sites allowing to have temporary plugins during test execution.
|
|
|
|
- deprecate and warn about ``__multicall__`` argument in hook
|
|
implementations. Use the ``hookwrapper`` mechanism instead already
|
|
introduced with pytest-2.7.
|
|
|
|
- speed up pytest's own test suite considerably by using inprocess
|
|
tests by default (testrun can be modified with --runpytest=subprocess
|
|
to create subprocesses in many places instead). The main
|
|
APIs to run pytest in a test is "runpytest()" or "runpytest_subprocess"
|
|
and "runpytest_inprocess" if you need a particular way of running
|
|
the test. In all cases you get back a RunResult but the inprocess
|
|
one will also have a "reprec" attribute with the recorded events/reports.
|
|
|
|
- fix monkeypatch.setattr("x.y", raising=False) to actually not raise
|
|
if "y" is not a pre-existing attribute. Thanks Florian Bruhin.
|
|
|
|
- fix issue741: make running output from testdir.run copy/pasteable
|
|
Thanks Bruno Oliveira.
|
|
|
|
- add a new ``--noconftest`` argument which ignores all ``conftest.py`` files.
|
|
|
|
- add ``file`` and ``line`` attributes to JUnit-XML output.
|
|
|
|
- fix issue890: changed extension of all documentation files from ``txt`` to
|
|
``rst``. Thanks to Abhijeet for the PR.
|
|
|
|
- fix issue714: add ability to apply indirect=True parameter on particular argnames.
|
|
Thanks Elizaveta239.
|
|
|
|
- fix issue890: changed extension of all documentation files from ``txt`` to
|
|
``rst``. Thanks to Abhijeet for the PR.
|
|
|
|
- fix issue957: "# doctest: SKIP" option will now register doctests as SKIPPED
|
|
rather than PASSED.
|
|
Thanks Thomas Grainger for the report and Bruno Oliveira for the PR.
|
|
|
|
- issue951: add new record_xml_property fixture, that supports logging
|
|
additional information on xml output. Thanks David Diaz for the PR.
|
|
|
|
- issue949: paths after normal options (for example ``-s``, ``-v``, etc) are now
|
|
properly used to discover ``rootdir`` and ``ini`` files.
|
|
Thanks Peter Lauri for the report and Bruno Oliveira for the PR.
|
|
|
|
2.7.3 (2015-09-15)
|
|
==================
|
|
|
|
- Allow 'dev', 'rc', or other non-integer version strings in ``importorskip``.
|
|
Thanks to Eric Hunsberger for the PR.
|
|
|
|
- fix issue856: consider --color parameter in all outputs (for example
|
|
--fixtures). Thanks Barney Gale for the report and Bruno Oliveira for the PR.
|
|
|
|
- fix issue855: passing str objects as ``plugins`` argument to pytest.main
|
|
is now interpreted as a module name to be imported and registered as a
|
|
plugin, instead of silently having no effect.
|
|
Thanks xmo-odoo for the report and Bruno Oliveira for the PR.
|
|
|
|
- fix issue744: fix for ast.Call changes in Python 3.5+. Thanks
|
|
Guido van Rossum, Matthias Bussonnier, Stefan Zimmermann and
|
|
Thomas Kluyver.
|
|
|
|
- fix issue842: applying markers in classes no longer propagate this markers
|
|
to superclasses which also have markers.
|
|
Thanks xmo-odoo for the report and Bruno Oliveira for the PR.
|
|
|
|
- preserve warning functions after call to pytest.deprecated_call. Thanks
|
|
Pieter Mulder for PR.
|
|
|
|
- fix issue854: autouse yield_fixtures defined as class members of
|
|
unittest.TestCase subclasses now work as expected.
|
|
Thannks xmo-odoo for the report and Bruno Oliveira for the PR.
|
|
|
|
- fix issue833: --fixtures now shows all fixtures of collected test files, instead of just the
|
|
fixtures declared on the first one.
|
|
Thanks Florian Bruhin for reporting and Bruno Oliveira for the PR.
|
|
|
|
- fix issue863: skipped tests now report the correct reason when a skip/xfail
|
|
condition is met when using multiple markers.
|
|
Thanks Raphael Pierzina for reporting and Bruno Oliveira for the PR.
|
|
|
|
- optimized tmpdir fixture initialization, which should make test sessions
|
|
faster (specially when using pytest-xdist). The only visible effect
|
|
is that now pytest uses a subdirectory in the $TEMP directory for all
|
|
directories created by this fixture (defaults to $TEMP/pytest-$USER).
|
|
Thanks Bruno Oliveira for the PR.
|
|
|
|
2.7.2 (2015-06-23)
|
|
==================
|
|
|
|
- fix issue767: pytest.raises value attribute does not contain the exception
|
|
instance on Python 2.6. Thanks Eric Siegerman for providing the test
|
|
case and Bruno Oliveira for PR.
|
|
|
|
- Automatically create directory for junitxml and results log.
|
|
Thanks Aron Curzon.
|
|
|
|
- fix issue713: JUnit XML reports for doctest failures.
|
|
Thanks Punyashloka Biswal.
|
|
|
|
- fix issue735: assertion failures on debug versions of Python 3.4+
|
|
Thanks Benjamin Peterson.
|
|
|
|
- fix issue114: skipif marker reports to internal skipping plugin;
|
|
Thanks Floris Bruynooghe for reporting and Bruno Oliveira for the PR.
|
|
|
|
- fix issue748: unittest.SkipTest reports to internal pytest unittest plugin.
|
|
Thanks Thomas De Schampheleire for reporting and Bruno Oliveira for the PR.
|
|
|
|
- fix issue718: failed to create representation of sets containing unsortable
|
|
elements in python 2. Thanks Edison Gustavo Muenz.
|
|
|
|
- fix issue756, fix issue752 (and similar issues): depend on py-1.4.29
|
|
which has a refined algorithm for traceback generation.
|
|
|
|
|
|
2.7.1 (2015-05-19)
|
|
==================
|
|
|
|
- fix issue731: do not get confused by the braces which may be present
|
|
and unbalanced in an object's repr while collapsing False
|
|
explanations. Thanks Carl Meyer for the report and test case.
|
|
|
|
- fix issue553: properly handling inspect.getsourcelines failures in
|
|
FixtureLookupError which would lead to an internal error,
|
|
obfuscating the original problem. Thanks talljosh for initial
|
|
diagnose/patch and Bruno Oliveira for final patch.
|
|
|
|
- fix issue660: properly report scope-mismatch-access errors
|
|
independently from ordering of fixture arguments. Also
|
|
avoid the pytest internal traceback which does not provide
|
|
information to the user. Thanks Holger Krekel.
|
|
|
|
- streamlined and documented release process. Also all versions
|
|
(in setup.py and documentation generation) are now read
|
|
from _pytest/__init__.py. Thanks Holger Krekel.
|
|
|
|
- fixed docs to remove the notion that yield-fixtures are experimental.
|
|
They are here to stay :) Thanks Bruno Oliveira.
|
|
|
|
- Support building wheels by using environment markers for the
|
|
requirements. Thanks Ionel Maries Cristian.
|
|
|
|
- fixed regression to 2.6.4 which surfaced e.g. in lost stdout capture printing
|
|
when tests raised SystemExit. Thanks Holger Krekel.
|
|
|
|
- reintroduced _pytest fixture of the pytester plugin which is used
|
|
at least by pytest-xdist.
|
|
|
|
2.7.0 (2015-03-26)
|
|
==================
|
|
|
|
- fix issue435: make reload() work when assert rewriting is active.
|
|
Thanks Daniel Hahler.
|
|
|
|
- fix issue616: conftest.py files and their contained fixutres are now
|
|
properly considered for visibility, independently from the exact
|
|
current working directory and test arguments that are used.
|
|
Many thanks to Eric Siegerman and his PR235 which contains
|
|
systematic tests for conftest visibility and now passes.
|
|
This change also introduces the concept of a ``rootdir`` which
|
|
is printed as a new pytest header and documented in the pytest
|
|
customize web page.
|
|
|
|
- change reporting of "diverted" tests, i.e. tests that are collected
|
|
in one file but actually come from another (e.g. when tests in a test class
|
|
come from a base class in a different file). We now show the nodeid
|
|
and indicate via a postfix the other file.
|
|
|
|
- add ability to set command line options by environment variable PYTEST_ADDOPTS.
|
|
|
|
- added documentation on the new pytest-dev teams on bitbucket and
|
|
github. See https://pytest.org/latest/contributing.html .
|
|
Thanks to Anatoly for pushing and initial work on this.
|
|
|
|
- fix issue650: new option ``--docttest-ignore-import-errors`` which
|
|
will turn import errors in doctests into skips. Thanks Charles Cloud
|
|
for the complete PR.
|
|
|
|
- fix issue655: work around different ways that cause python2/3
|
|
to leak sys.exc_info into fixtures/tests causing failures in 3rd party code
|
|
|
|
- fix issue615: assertion rewriting did not correctly escape % signs
|
|
when formatting boolean operations, which tripped over mixing
|
|
booleans with modulo operators. Thanks to Tom Viner for the report,
|
|
triaging and fix.
|
|
|
|
- implement issue351: add ability to specify parametrize ids as a callable
|
|
to generate custom test ids. Thanks Brianna Laugher for the idea and
|
|
implementation.
|
|
|
|
- introduce and document new hookwrapper mechanism useful for plugins
|
|
which want to wrap the execution of certain hooks for their purposes.
|
|
This supersedes the undocumented ``__multicall__`` protocol which
|
|
pytest itself and some external plugins use. Note that pytest-2.8
|
|
is scheduled to drop supporting the old ``__multicall__``
|
|
and only support the hookwrapper protocol.
|
|
|
|
- majorly speed up invocation of plugin hooks
|
|
|
|
- use hookwrapper mechanism in builtin pytest plugins.
|
|
|
|
- add a doctest ini option for doctest flags, thanks Holger Peters.
|
|
|
|
- add note to docs that if you want to mark a parameter and the
|
|
parameter is a callable, you also need to pass in a reason to disambiguate
|
|
it from the "decorator" case. Thanks Tom Viner.
|
|
|
|
- "python_classes" and "python_functions" options now support glob-patterns
|
|
for test discovery, as discussed in issue600. Thanks Ldiary Translations.
|
|
|
|
- allow to override parametrized fixtures with non-parametrized ones and vice versa (bubenkoff).
|
|
|
|
- fix issue463: raise specific error for 'parameterize' misspelling (pfctdayelise).
|
|
|
|
- On failure, the ``sys.last_value``, ``sys.last_type`` and
|
|
``sys.last_traceback`` are set, so that a user can inspect the error
|
|
via postmortem debugging (almarklein).
|
|
|
|
2.6.4 (2014-10-24)
|
|
==================
|
|
|
|
- Improve assertion failure reporting on iterables, by using ndiff and
|
|
pprint.
|
|
|
|
- removed outdated japanese docs from source tree.
|
|
|
|
- docs for "pytest_addhooks" hook. Thanks Bruno Oliveira.
|
|
|
|
- updated plugin index docs. Thanks Bruno Oliveira.
|
|
|
|
- fix issue557: with "-k" we only allow the old style "-" for negation
|
|
at the beginning of strings and even that is deprecated. Use "not" instead.
|
|
This should allow to pick parametrized tests where "-" appeared in the parameter.
|
|
|
|
- fix issue604: Escape % character in the assertion message.
|
|
|
|
- fix issue620: add explanation in the --genscript target about what
|
|
the binary blob means. Thanks Dinu Gherman.
|
|
|
|
- fix issue614: fixed pastebin support.
|
|
|
|
|
|
- fix issue620: add explanation in the --genscript target about what
|
|
the binary blob means. Thanks Dinu Gherman.
|
|
|
|
- fix issue614: fixed pastebin support.
|
|
|
|
2.6.3 (2014-09-24)
|
|
==================
|
|
|
|
- fix issue575: xunit-xml was reporting collection errors as failures
|
|
instead of errors, thanks Oleg Sinyavskiy.
|
|
|
|
- fix issue582: fix setuptools example, thanks Laszlo Papp and Ronny
|
|
Pfannschmidt.
|
|
|
|
- Fix infinite recursion bug when pickling capture.EncodedFile, thanks
|
|
Uwe Schmitt.
|
|
|
|
- fix issue589: fix bad interaction with numpy and others when showing
|
|
exceptions. Check for precise "maximum recursion depth exceed" exception
|
|
instead of presuming any RuntimeError is that one (implemented in py
|
|
dep). Thanks Charles Cloud for analysing the issue.
|
|
|
|
- fix conftest related fixture visibility issue: when running with a
|
|
CWD outside of a test package pytest would get fixture discovery wrong.
|
|
Thanks to Wolfgang Schnerring for figuring out a reproducible example.
|
|
|
|
- Introduce pytest_enter_pdb hook (needed e.g. by pytest_timeout to cancel the
|
|
timeout when interactively entering pdb). Thanks Wolfgang Schnerring.
|
|
|
|
- check xfail/skip also with non-python function test items. Thanks
|
|
Floris Bruynooghe.
|
|
|
|
2.6.2 (2014-09-05)
|
|
==================
|
|
|
|
- Added function pytest.freeze_includes(), which makes it easy to embed
|
|
pytest into executables using tools like cx_freeze.
|
|
See docs for examples and rationale. Thanks Bruno Oliveira.
|
|
|
|
- Improve assertion rewriting cache invalidation precision.
|
|
|
|
- fixed issue561: adapt autouse fixture example for python3.
|
|
|
|
- fixed issue453: assertion rewriting issue with __repr__ containing
|
|
"\n{", "\n}" and "\n~".
|
|
|
|
- fix issue560: correctly display code if an "else:" or "finally:" is
|
|
followed by statements on the same line.
|
|
|
|
- Fix example in monkeypatch documentation, thanks t-8ch.
|
|
|
|
- fix issue572: correct tmpdir doc example for python3.
|
|
|
|
- Do not mark as universal wheel because Python 2.6 is different from
|
|
other builds due to the extra argparse dependency. Fixes issue566.
|
|
Thanks sontek.
|
|
|
|
- Implement issue549: user-provided assertion messages now no longer
|
|
replace the py.test introspection message but are shown in addition
|
|
to them.
|
|
|
|
2.6.1 (2014-08-07)
|
|
==================
|
|
|
|
- No longer show line numbers in the --verbose output, the output is now
|
|
purely the nodeid. The line number is still shown in failure reports.
|
|
Thanks Floris Bruynooghe.
|
|
|
|
- fix issue437 where assertion rewriting could cause pytest-xdist slaves
|
|
to collect different tests. Thanks Bruno Oliveira.
|
|
|
|
- fix issue555: add "errors" attribute to capture-streams to satisfy
|
|
some distutils and possibly other code accessing sys.stdout.errors.
|
|
|
|
- fix issue547 capsys/capfd also work when output capturing ("-s") is disabled.
|
|
|
|
- address issue170: allow pytest.mark.xfail(...) to specify expected exceptions via
|
|
an optional "raises=EXC" argument where EXC can be a single exception
|
|
or a tuple of exception classes. Thanks David Mohr for the complete
|
|
PR.
|
|
|
|
- fix integration of pytest with unittest.mock.patch decorator when
|
|
it uses the "new" argument. Thanks Nicolas Delaby for test and PR.
|
|
|
|
- fix issue with detecting conftest files if the arguments contain
|
|
"::" node id specifications (copy pasted from "-v" output)
|
|
|
|
- fix issue544 by only removing "@NUM" at the end of "::" separated parts
|
|
and if the part has a ".py" extension
|
|
|
|
- don't use py.std import helper, rather import things directly.
|
|
Thanks Bruno Oliveira.
|
|
|
|
2.6
|
|
===
|
|
|
|
- Cache exceptions from fixtures according to their scope (issue 467).
|
|
|
|
- fix issue537: Avoid importing old assertion reinterpretation code by default.
|
|
|
|
- fix issue364: shorten and enhance tracebacks representation by default.
|
|
The new "--tb=auto" option (default) will only display long tracebacks
|
|
for the first and last entry. You can get the old behaviour of printing
|
|
all entries as long entries with "--tb=long". Also short entries by
|
|
default are now printed very similarly to "--tb=native" ones.
|
|
|
|
- fix issue514: teach assertion reinterpretation about private class attributes
|
|
|
|
- change -v output to include full node IDs of tests. Users can copy
|
|
a node ID from a test run, including line number, and use it as a
|
|
positional argument in order to run only a single test.
|
|
|
|
- fix issue 475: fail early and comprehensible if calling
|
|
pytest.raises with wrong exception type.
|
|
|
|
- fix issue516: tell in getting-started about current dependencies.
|
|
|
|
- cleanup setup.py a bit and specify supported versions. Thanks Jurko
|
|
Gospodnetic for the PR.
|
|
|
|
- change XPASS colour to yellow rather then red when tests are run
|
|
with -v.
|
|
|
|
- fix issue473: work around mock putting an unbound method into a class
|
|
dict when double-patching.
|
|
|
|
- fix issue498: if a fixture finalizer fails, make sure that
|
|
the fixture is still invalidated.
|
|
|
|
- fix issue453: the result of the pytest_assertrepr_compare hook now gets
|
|
it's newlines escaped so that format_exception does not blow up.
|
|
|
|
- internal new warning system: pytest will now produce warnings when
|
|
it detects oddities in your test collection or execution.
|
|
Warnings are ultimately sent to a new pytest_logwarning hook which is
|
|
currently only implemented by the terminal plugin which displays
|
|
warnings in the summary line and shows more details when -rw (report on
|
|
warnings) is specified.
|
|
|
|
- change skips into warnings for test classes with an __init__ and
|
|
callables in test modules which look like a test but are not functions.
|
|
|
|
- fix issue436: improved finding of initial conftest files from command
|
|
line arguments by using the result of parse_known_args rather than
|
|
the previous flaky heuristics. Thanks Marc Abramowitz for tests
|
|
and initial fixing approaches in this area.
|
|
|
|
- fix issue #479: properly handle nose/unittest(2) SkipTest exceptions
|
|
during collection/loading of test modules. Thanks to Marc Schlaich
|
|
for the complete PR.
|
|
|
|
- fix issue490: include pytest_load_initial_conftests in documentation
|
|
and improve docstring.
|
|
|
|
- fix issue472: clarify that ``pytest.config.getvalue()`` cannot work
|
|
if it's triggered ahead of command line parsing.
|
|
|
|
- merge PR123: improved integration with mock.patch decorator on tests.
|
|
|
|
- fix issue412: messing with stdout/stderr FD-level streams is now
|
|
captured without crashes.
|
|
|
|
- fix issue483: trial/py33 works now properly. Thanks Daniel Grana for PR.
|
|
|
|
- improve example for pytest integration with "python setup.py test"
|
|
which now has a generic "-a" or "--pytest-args" option where you
|
|
can pass additional options as a quoted string. Thanks Trevor Bekolay.
|
|
|
|
- simplified internal capturing mechanism and made it more robust
|
|
against tests or setups changing FD1/FD2, also better integrated
|
|
now with pytest.pdb() in single tests.
|
|
|
|
- improvements to pytest's own test-suite leakage detection, courtesy of PRs
|
|
from Marc Abramowitz
|
|
|
|
- fix issue492: avoid leak in test_writeorg. Thanks Marc Abramowitz.
|
|
|
|
- fix issue493: don't run tests in doc directory with ``python setup.py test``
|
|
(use tox -e doctesting for that)
|
|
|
|
- fix issue486: better reporting and handling of early conftest loading failures
|
|
|
|
- some cleanup and simplification of internal conftest handling.
|
|
|
|
- work a bit harder to break reference cycles when catching exceptions.
|
|
Thanks Jurko Gospodnetic.
|
|
|
|
- fix issue443: fix skip examples to use proper comparison. Thanks Alex
|
|
Groenholm.
|
|
|
|
- support nose-style ``__test__`` attribute on modules, classes and
|
|
functions, including unittest-style Classes. If set to False, the
|
|
test will not be collected.
|
|
|
|
- fix issue512: show "<notset>" for arguments which might not be set
|
|
in monkeypatch plugin. Improves output in documentation.
|
|
|
|
|
|
2.5.2 (2014-01-29)
|
|
==================
|
|
|
|
- fix issue409 -- better interoperate with cx_freeze by not
|
|
trying to import from collections.abc which causes problems
|
|
for py27/cx_freeze. Thanks Wolfgang L. for reporting and tracking it down.
|
|
|
|
- fixed docs and code to use "pytest" instead of "py.test" almost everywhere.
|
|
Thanks Jurko Gospodnetic for the complete PR.
|
|
|
|
- fix issue425: mention at end of "py.test -h" that --markers
|
|
and --fixtures work according to specified test path (or current dir)
|
|
|
|
- fix issue413: exceptions with unicode attributes are now printed
|
|
correctly also on python2 and with pytest-xdist runs. (the fix
|
|
requires py-1.4.20)
|
|
|
|
- copy, cleanup and integrate py.io capture
|
|
from pylib 1.4.20.dev2 (rev 13d9af95547e)
|
|
|
|
- address issue416: clarify docs as to conftest.py loading semantics
|
|
|
|
- fix issue429: comparing byte strings with non-ascii chars in assert
|
|
expressions now work better. Thanks Floris Bruynooghe.
|
|
|
|
- make capfd/capsys.capture private, its unused and shouldn't be exposed
|
|
|
|
|
|
2.5.1 (2013-12-17)
|
|
==================
|
|
|
|
- merge new documentation styling PR from Tobias Bieniek.
|
|
|
|
- fix issue403: allow parametrize of multiple same-name functions within
|
|
a collection node. Thanks Andreas Kloeckner and Alex Gaynor for reporting
|
|
and analysis.
|
|
|
|
- Allow parameterized fixtures to specify the ID of the parameters by
|
|
adding an ids argument to pytest.fixture() and pytest.yield_fixture().
|
|
Thanks Floris Bruynooghe.
|
|
|
|
- fix issue404 by always using the binary xml escape in the junitxml
|
|
plugin. Thanks Ronny Pfannschmidt.
|
|
|
|
- fix issue407: fix addoption docstring to point to argparse instead of
|
|
optparse. Thanks Daniel D. Wright.
|
|
|
|
|
|
|
|
2.5.0 (2013-12-12)
|
|
==================
|
|
|
|
- dropped python2.5 from automated release testing of pytest itself
|
|
which means it's probably going to break soon (but still works
|
|
with this release we believe).
|
|
|
|
- simplified and fixed implementation for calling finalizers when
|
|
parametrized fixtures or function arguments are involved. finalization
|
|
is now performed lazily at setup time instead of in the "teardown phase".
|
|
While this might sound odd at first, it helps to ensure that we are
|
|
correctly handling setup/teardown even in complex code. User-level code
|
|
should not be affected unless it's implementing the pytest_runtest_teardown
|
|
hook and expecting certain fixture instances are torn down within (very
|
|
unlikely and would have been unreliable anyway).
|
|
|
|
- PR90: add --color=yes|no|auto option to force terminal coloring
|
|
mode ("auto" is default). Thanks Marc Abramowitz.
|
|
|
|
- fix issue319 - correctly show unicode in assertion errors. Many
|
|
thanks to Floris Bruynooghe for the complete PR. Also means
|
|
we depend on py>=1.4.19 now.
|
|
|
|
- fix issue396 - correctly sort and finalize class-scoped parametrized
|
|
tests independently from number of methods on the class.
|
|
|
|
- refix issue323 in a better way -- parametrization should now never
|
|
cause Runtime Recursion errors because the underlying algorithm
|
|
for re-ordering tests per-scope/per-fixture is not recursive
|
|
anymore (it was tail-call recursive before which could lead
|
|
to problems for more than >966 non-function scoped parameters).
|
|
|
|
- fix issue290 - there is preliminary support now for parametrizing
|
|
with repeated same values (sometimes useful to test if calling
|
|
a second time works as with the first time).
|
|
|
|
- close issue240 - document precisely how pytest module importing
|
|
works, discuss the two common test directory layouts, and how it
|
|
interacts with PEP420-namespace packages.
|
|
|
|
- fix issue246 fix finalizer order to be LIFO on independent fixtures
|
|
depending on a parametrized higher-than-function scoped fixture.
|
|
(was quite some effort so please bear with the complexity of this sentence :)
|
|
Thanks Ralph Schmitt for the precise failure example.
|
|
|
|
- fix issue244 by implementing special index for parameters to only use
|
|
indices for paramentrized test ids
|
|
|
|
- fix issue287 by running all finalizers but saving the exception
|
|
from the first failing finalizer and re-raising it so teardown will
|
|
still have failed. We reraise the first failing exception because
|
|
it might be the cause for other finalizers to fail.
|
|
|
|
- fix ordering when mock.patch or other standard decorator-wrappings
|
|
are used with test methods. This fixues issue346 and should
|
|
help with random "xdist" collection failures. Thanks to
|
|
Ronny Pfannschmidt and Donald Stufft for helping to isolate it.
|
|
|
|
- fix issue357 - special case "-k" expressions to allow for
|
|
filtering with simple strings that are not valid python expressions.
|
|
Examples: "-k 1.3" matches all tests parametrized with 1.3.
|
|
"-k None" filters all tests that have "None" in their name
|
|
and conversely "-k 'not None'".
|
|
Previously these examples would raise syntax errors.
|
|
|
|
- fix issue384 by removing the trial support code
|
|
since the unittest compat enhancements allow
|
|
trial to handle it on its own
|
|
|
|
- don't hide an ImportError when importing a plugin produces one.
|
|
fixes issue375.
|
|
|
|
- fix issue275 - allow usefixtures and autouse fixtures
|
|
for running doctest text files.
|
|
|
|
- fix issue380 by making --resultlog only rely on longrepr instead
|
|
of the "reprcrash" attribute which only exists sometimes.
|
|
|
|
- address issue122: allow @pytest.fixture(params=iterator) by exploding
|
|
into a list early on.
|
|
|
|
- fix pexpect-3.0 compatibility for pytest's own tests.
|
|
(fixes issue386)
|
|
|
|
- allow nested parametrize-value markers, thanks James Lan for the PR.
|
|
|
|
- fix unicode handling with new monkeypatch.setattr(import_path, value)
|
|
API. Thanks Rob Dennis. Fixes issue371.
|
|
|
|
- fix unicode handling with junitxml, fixes issue368.
|
|
|
|
- In assertion rewriting mode on Python 2, fix the detection of coding
|
|
cookies. See issue #330.
|
|
|
|
- make "--runxfail" turn imperative pytest.xfail calls into no ops
|
|
(it already did neutralize pytest.mark.xfail markers)
|
|
|
|
- refine pytest / pkg_resources interactions: The AssertionRewritingHook
|
|
PEP302 compliant loader now registers itself with setuptools/pkg_resources
|
|
properly so that the pkg_resources.resource_stream method works properly.
|
|
Fixes issue366. Thanks for the investigations and full PR to Jason R. Coombs.
|
|
|
|
- pytestconfig fixture is now session-scoped as it is the same object during the
|
|
whole test run. Fixes issue370.
|
|
|
|
- avoid one surprising case of marker malfunction/confusion::
|
|
|
|
@pytest.mark.some(lambda arg: ...)
|
|
def test_function():
|
|
|
|
would not work correctly because pytest assumes @pytest.mark.some
|
|
gets a function to be decorated already. We now at least detect if this
|
|
arg is a lambda and thus the example will work. Thanks Alex Gaynor
|
|
for bringing it up.
|
|
|
|
- xfail a test on pypy that checks wrong encoding/ascii (pypy does
|
|
not error out). fixes issue385.
|
|
|
|
- internally make varnames() deal with classes's __init__,
|
|
although it's not needed by pytest itself atm. Also
|
|
fix caching. Fixes issue376.
|
|
|
|
- fix issue221 - handle importing of namespace-package with no
|
|
__init__.py properly.
|
|
|
|
- refactor internal FixtureRequest handling to avoid monkeypatching.
|
|
One of the positive user-facing effects is that the "request" object
|
|
can now be used in closures.
|
|
|
|
- fixed version comparison in pytest.importskip(modname, minverstring)
|
|
|
|
- fix issue377 by clarifying in the nose-compat docs that pytest
|
|
does not duplicate the unittest-API into the "plain" namespace.
|
|
|
|
- fix verbose reporting for @mock'd test functions
|
|
|
|
2.4.2 (2013-10-04)
|
|
==================
|
|
|
|
- on Windows require colorama and a newer py lib so that py.io.TerminalWriter()
|
|
now uses colorama instead of its own ctypes hacks. (fixes issue365)
|
|
thanks Paul Moore for bringing it up.
|
|
|
|
- fix "-k" matching of tests where "repr" and "attr" and other names would
|
|
cause wrong matches because of an internal implementation quirk
|
|
(don't ask) which is now properly implemented. fixes issue345.
|
|
|
|
- avoid tmpdir fixture to create too long filenames especially
|
|
when parametrization is used (issue354)
|
|
|
|
- fix pytest-pep8 and pytest-flakes / pytest interactions
|
|
(collection names in mark plugin was assuming an item always
|
|
has a function which is not true for those plugins etc.)
|
|
Thanks Andi Zeidler.
|
|
|
|
- introduce node.get_marker/node.add_marker API for plugins
|
|
like pytest-pep8 and pytest-flakes to avoid the messy
|
|
details of the node.keywords pseudo-dicts. Adapted
|
|
docs.
|
|
|
|
- remove attempt to "dup" stdout at startup as it's icky.
|
|
the normal capturing should catch enough possibilities
|
|
of tests messing up standard FDs.
|
|
|
|
- add pluginmanager.do_configure(config) as a link to
|
|
config.do_configure() for plugin-compatibility
|
|
|
|
2.4.1 (2013-10-02)
|
|
==================
|
|
|
|
- When using parser.addoption() unicode arguments to the
|
|
"type" keyword should also be converted to the respective types.
|
|
thanks Floris Bruynooghe, @dnozay. (fixes issue360 and issue362)
|
|
|
|
- fix dotted filename completion when using argcomplete
|
|
thanks Anthon van der Neuth. (fixes issue361)
|
|
|
|
- fix regression when a 1-tuple ("arg",) is used for specifying
|
|
parametrization (the values of the parametrization were passed
|
|
nested in a tuple). Thanks Donald Stufft.
|
|
|
|
- merge doc typo fixes, thanks Andy Dirnberger
|
|
|
|
2.4
|
|
===
|
|
|
|
known incompatibilities:
|
|
|
|
- if calling --genscript from python2.7 or above, you only get a
|
|
standalone script which works on python2.7 or above. Use Python2.6
|
|
to also get a python2.5 compatible version.
|
|
|
|
- all xunit-style teardown methods (nose-style, pytest-style,
|
|
unittest-style) will not be called if the corresponding setup method failed,
|
|
see issue322 below.
|
|
|
|
- the pytest_plugin_unregister hook wasn't ever properly called
|
|
and there is no known implementation of the hook - so it got removed.
|
|
|
|
- pytest.fixture-decorated functions cannot be generators (i.e. use
|
|
yield) anymore. This change might be reversed in 2.4.1 if it causes
|
|
unforeseen real-life issues. However, you can always write and return
|
|
an inner function/generator and change the fixture consumer to iterate
|
|
over the returned generator. This change was done in lieu of the new
|
|
``pytest.yield_fixture`` decorator, see below.
|
|
|
|
new features:
|
|
|
|
- experimentally introduce a new ``pytest.yield_fixture`` decorator
|
|
which accepts exactly the same parameters as pytest.fixture but
|
|
mandates a ``yield`` statement instead of a ``return statement`` from
|
|
fixture functions. This allows direct integration with "with-style"
|
|
context managers in fixture functions and generally avoids registering
|
|
of finalization callbacks in favour of treating the "after-yield" as
|
|
teardown code. Thanks Andreas Pelme, Vladimir Keleshev, Floris
|
|
Bruynooghe, Ronny Pfannschmidt and many others for discussions.
|
|
|
|
- allow boolean expression directly with skipif/xfail
|
|
if a "reason" is also specified. Rework skipping documentation
|
|
to recommend "condition as booleans" because it prevents surprises
|
|
when importing markers between modules. Specifying conditions
|
|
as strings will remain fully supported.
|
|
|
|
- reporting: color the last line red or green depending if
|
|
failures/errors occurred or everything passed. thanks Christian
|
|
Theunert.
|
|
|
|
- make "import pdb ; pdb.set_trace()" work natively wrt capturing (no
|
|
"-s" needed anymore), making ``pytest.set_trace()`` a mere shortcut.
|
|
|
|
- fix issue181: --pdb now also works on collect errors (and
|
|
on internal errors) . This was implemented by a slight internal
|
|
refactoring and the introduction of a new hook
|
|
``pytest_exception_interact`` hook (see next item).
|
|
|
|
- fix issue341: introduce new experimental hook for IDEs/terminals to
|
|
intercept debugging: ``pytest_exception_interact(node, call, report)``.
|
|
|
|
- new monkeypatch.setattr() variant to provide a shorter
|
|
invocation for patching out classes/functions from modules:
|
|
|
|
monkeypatch.setattr("requests.get", myfunc)
|
|
|
|
will replace the "get" function of the "requests" module with ``myfunc``.
|
|
|
|
- fix issue322: tearDownClass is not run if setUpClass failed. Thanks
|
|
Mathieu Agopian for the initial fix. Also make all of pytest/nose
|
|
finalizer mimic the same generic behaviour: if a setupX exists and
|
|
fails, don't run teardownX. This internally introduces a new method
|
|
"node.addfinalizer()" helper which can only be called during the setup
|
|
phase of a node.
|
|
|
|
- simplify pytest.mark.parametrize() signature: allow to pass a
|
|
CSV-separated string to specify argnames. For example:
|
|
``pytest.mark.parametrize("input,expected", [(1,2), (2,3)])``
|
|
works as well as the previous:
|
|
``pytest.mark.parametrize(("input", "expected"), ...)``.
|
|
|
|
- add support for setUpModule/tearDownModule detection, thanks Brian Okken.
|
|
|
|
- integrate tab-completion on options through use of "argcomplete".
|
|
Thanks Anthon van der Neut for the PR.
|
|
|
|
- change option names to be hyphen-separated long options but keep the
|
|
old spelling backward compatible. py.test -h will only show the
|
|
hyphenated version, for example "--collect-only" but "--collectonly"
|
|
will remain valid as well (for backward-compat reasons). Many thanks to
|
|
Anthon van der Neut for the implementation and to Hynek Schlawack for
|
|
pushing us.
|
|
|
|
- fix issue 308 - allow to mark/xfail/skip individual parameter sets
|
|
when parametrizing. Thanks Brianna Laugher.
|
|
|
|
- call new experimental pytest_load_initial_conftests hook to allow
|
|
3rd party plugins to do something before a conftest is loaded.
|
|
|
|
Bug fixes:
|
|
|
|
- fix issue358 - capturing options are now parsed more properly
|
|
by using a new parser.parse_known_args method.
|
|
|
|
- pytest now uses argparse instead of optparse (thanks Anthon) which
|
|
means that "argparse" is added as a dependency if installing into python2.6
|
|
environments or below.
|
|
|
|
- fix issue333: fix a case of bad unittest/pytest hook interaction.
|
|
|
|
- PR27: correctly handle nose.SkipTest during collection. Thanks
|
|
Antonio Cuni, Ronny Pfannschmidt.
|
|
|
|
- fix issue355: junitxml puts name="pytest" attribute to testsuite tag.
|
|
|
|
- fix issue336: autouse fixture in plugins should work again.
|
|
|
|
- fix issue279: improve object comparisons on assertion failure
|
|
for standard datatypes and recognise collections.abc. Thanks to
|
|
Brianna Laugher and Mathieu Agopian.
|
|
|
|
- fix issue317: assertion rewriter support for the is_package method
|
|
|
|
- fix issue335: document py.code.ExceptionInfo() object returned
|
|
from pytest.raises(), thanks Mathieu Agopian.
|
|
|
|
- remove implicit distribute_setup support from setup.py.
|
|
|
|
- fix issue305: ignore any problems when writing pyc files.
|
|
|
|
- SO-17664702: call fixture finalizers even if the fixture function
|
|
partially failed (finalizers would not always be called before)
|
|
|
|
- fix issue320 - fix class scope for fixtures when mixed with
|
|
module-level functions. Thanks Anatloy Bubenkoff.
|
|
|
|
- you can specify "-q" or "-qq" to get different levels of "quieter"
|
|
reporting (thanks Katarzyna Jachim)
|
|
|
|
- fix issue300 - Fix order of conftest loading when starting py.test
|
|
in a subdirectory.
|
|
|
|
- fix issue323 - sorting of many module-scoped arg parametrizations
|
|
|
|
- make sessionfinish hooks execute with the same cwd-context as at
|
|
session start (helps fix plugin behaviour which write output files
|
|
with relative path such as pytest-cov)
|
|
|
|
- fix issue316 - properly reference collection hooks in docs
|
|
|
|
- fix issue 306 - cleanup of -k/-m options to only match markers/test
|
|
names/keywords respectively. Thanks Wouter van Ackooy.
|
|
|
|
- improved doctest counting for doctests in python modules --
|
|
files without any doctest items will not show up anymore
|
|
and doctest examples are counted as separate test items.
|
|
thanks Danilo Bellini.
|
|
|
|
- fix issue245 by depending on the released py-1.4.14
|
|
which fixes py.io.dupfile to work with files with no
|
|
mode. Thanks Jason R. Coombs.
|
|
|
|
- fix junitxml generation when test output contains control characters,
|
|
addressing issue267, thanks Jaap Broekhuizen
|
|
|
|
- fix issue338: honor --tb style for setup/teardown errors as well. Thanks Maho.
|
|
|
|
- fix issue307 - use yaml.safe_load in example, thanks Mark Eichin.
|
|
|
|
- better parametrize error messages, thanks Brianna Laugher
|
|
|
|
- pytest_terminal_summary(terminalreporter) hooks can now use
|
|
".section(title)" and ".line(msg)" methods to print extra
|
|
information at the end of a test run.
|
|
|
|
2.3.5 (2013-04-30)
|
|
==================
|
|
|
|
- fix issue169: respect --tb=style with setup/teardown errors as well.
|
|
|
|
- never consider a fixture function for test function collection
|
|
|
|
- allow re-running of test items / helps to fix pytest-reruntests plugin
|
|
and also help to keep less fixture/resource references alive
|
|
|
|
- put captured stdout/stderr into junitxml output even for passing tests
|
|
(thanks Adam Goucher)
|
|
|
|
- Issue 265 - integrate nose setup/teardown with setupstate
|
|
so it doesn't try to teardown if it did not setup
|
|
|
|
- issue 271 - don't write junitxml on slave nodes
|
|
|
|
- Issue 274 - don't try to show full doctest example
|
|
when doctest does not know the example location
|
|
|
|
- issue 280 - disable assertion rewriting on buggy CPython 2.6.0
|
|
|
|
- inject "getfixture()" helper to retrieve fixtures from doctests,
|
|
thanks Andreas Zeidler
|
|
|
|
- issue 259 - when assertion rewriting, be consistent with the default
|
|
source encoding of ASCII on Python 2
|
|
|
|
- issue 251 - report a skip instead of ignoring classes with init
|
|
|
|
- issue250 unicode/str mixes in parametrization names and values now works
|
|
|
|
- issue257, assertion-triggered compilation of source ending in a
|
|
comment line doesn't blow up in python2.5 (fixed through py>=1.4.13.dev6)
|
|
|
|
- fix --genscript option to generate standalone scripts that also
|
|
work with python3.3 (importer ordering)
|
|
|
|
- issue171 - in assertion rewriting, show the repr of some
|
|
global variables
|
|
|
|
- fix option help for "-k"
|
|
|
|
- move long description of distribution into README.rst
|
|
|
|
- improve docstring for metafunc.parametrize()
|
|
|
|
- fix bug where using capsys with pytest.set_trace() in a test
|
|
function would break when looking at capsys.readouterr()
|
|
|
|
- allow to specify prefixes starting with "_" when
|
|
customizing python_functions test discovery. (thanks Graham Horler)
|
|
|
|
- improve PYTEST_DEBUG tracing output by putting
|
|
extra data on a new lines with additional indent
|
|
|
|
- ensure OutcomeExceptions like skip/fail have initialized exception attributes
|
|
|
|
- issue 260 - don't use nose special setup on plain unittest cases
|
|
|
|
- fix issue134 - print the collect errors that prevent running specified test items
|
|
|
|
- fix issue266 - accept unicode in MarkEvaluator expressions
|
|
|
|
2.3.4 (2012-11-20)
|
|
==================
|
|
|
|
- yielded test functions will now have autouse-fixtures active but
|
|
cannot accept fixtures as funcargs - it's anyway recommended to
|
|
rather use the post-2.0 parametrize features instead of yield, see:
|
|
http://pytest.org/latest/example/parametrize.html
|
|
- fix autouse-issue where autouse-fixtures would not be discovered
|
|
if defined in an a/conftest.py file and tests in a/tests/test_some.py
|
|
- fix issue226 - LIFO ordering for fixture teardowns
|
|
- fix issue224 - invocations with >256 char arguments now work
|
|
- fix issue91 - add/discuss package/directory level setups in example
|
|
- allow to dynamically define markers via
|
|
item.keywords[...]=assignment integrating with "-m" option
|
|
- make "-k" accept an expressions the same as with "-m" so that one
|
|
can write: -k "name1 or name2" etc. This is a slight incompatibility
|
|
if you used special syntax like "TestClass.test_method" which you now
|
|
need to write as -k "TestClass and test_method" to match a certain
|
|
method in a certain test class.
|
|
|
|
2.3.3 (2012-11-06)
|
|
==================
|
|
|
|
- fix issue214 - parse modules that contain special objects like e. g.
|
|
flask's request object which blows up on getattr access if no request
|
|
is active. thanks Thomas Waldmann.
|
|
|
|
- fix issue213 - allow to parametrize with values like numpy arrays that
|
|
do not support an __eq__ operator
|
|
|
|
- fix issue215 - split test_python.org into multiple files
|
|
|
|
- fix issue148 - @unittest.skip on classes is now recognized and avoids
|
|
calling setUpClass/tearDownClass, thanks Pavel Repin
|
|
|
|
- fix issue209 - reintroduce python2.4 support by depending on newer
|
|
pylib which re-introduced statement-finding for pre-AST interpreters
|
|
|
|
- nose support: only call setup if it's a callable, thanks Andrew
|
|
Taumoefolau
|
|
|
|
- fix issue219 - add py2.4-3.3 classifiers to TROVE list
|
|
|
|
- in tracebacks *,** arg values are now shown next to normal arguments
|
|
(thanks Manuel Jacob)
|
|
|
|
- fix issue217 - support mock.patch with pytest's fixtures - note that
|
|
you need either mock-1.0.1 or the python3.3 builtin unittest.mock.
|
|
|
|
- fix issue127 - improve documentation for pytest_addoption() and
|
|
add a ``config.getoption(name)`` helper function for consistency.
|
|
|
|
2.3.2 (2012-10-25)
|
|
==================
|
|
|
|
- fix issue208 and fix issue29 use new py version to avoid long pauses
|
|
when printing tracebacks in long modules
|
|
|
|
- fix issue205 - conftests in subdirs customizing
|
|
pytest_pycollect_makemodule and pytest_pycollect_makeitem
|
|
now work properly
|
|
|
|
- fix teardown-ordering for parametrized setups
|
|
|
|
- fix issue127 - better documentation for pytest_addoption
|
|
and related objects.
|
|
|
|
- fix unittest behaviour: TestCase.runtest only called if there are
|
|
test methods defined
|
|
|
|
- improve trial support: don't collect its empty
|
|
unittest.TestCase.runTest() method
|
|
|
|
- "python setup.py test" now works with pytest itself
|
|
|
|
- fix/improve internal/packaging related bits:
|
|
|
|
- exception message check of test_nose.py now passes on python33 as well
|
|
|
|
- issue206 - fix test_assertrewrite.py to work when a global
|
|
PYTHONDONTWRITEBYTECODE=1 is present
|
|
|
|
- add tox.ini to pytest distribution so that ignore-dirs and others config
|
|
bits are properly distributed for maintainers who run pytest-own tests
|
|
|
|
2.3.1 (2012-10-20)
|
|
==================
|
|
|
|
- fix issue202 - fix regression: using "self" from fixture functions now
|
|
works as expected (it's the same "self" instance that a test method
|
|
which uses the fixture sees)
|
|
|
|
- skip pexpect using tests (test_pdb.py mostly) on freebsd* systems
|
|
due to pexpect not supporting it properly (hanging)
|
|
|
|
- link to web pages from --markers output which provides help for
|
|
pytest.mark.* usage.
|
|
|
|
2.3.0 (2012-10-19)
|
|
==================
|
|
|
|
- fix issue202 - better automatic names for parametrized test functions
|
|
- fix issue139 - introduce @pytest.fixture which allows direct scoping
|
|
and parametrization of funcarg factories.
|
|
- fix issue198 - conftest fixtures were not found on windows32 in some
|
|
circumstances with nested directory structures due to path manipulation issues
|
|
- fix issue193 skip test functions with were parametrized with empty
|
|
parameter sets
|
|
- fix python3.3 compat, mostly reporting bits that previously depended
|
|
on dict ordering
|
|
- introduce re-ordering of tests by resource and parametrization setup
|
|
which takes precedence to the usual file-ordering
|
|
- fix issue185 monkeypatching time.time does not cause pytest to fail
|
|
- fix issue172 duplicate call of pytest.fixture decoratored setup_module
|
|
functions
|
|
- fix junitxml=path construction so that if tests change the
|
|
current working directory and the path is a relative path
|
|
it is constructed correctly from the original current working dir.
|
|
- fix "python setup.py test" example to cause a proper "errno" return
|
|
- fix issue165 - fix broken doc links and mention stackoverflow for FAQ
|
|
- catch unicode-issues when writing failure representations
|
|
to terminal to prevent the whole session from crashing
|
|
- fix xfail/skip confusion: a skip-mark or an imperative pytest.skip
|
|
will now take precedence before xfail-markers because we
|
|
can't determine xfail/xpass status in case of a skip. see also:
|
|
http://stackoverflow.com/questions/11105828/in-py-test-when-i-explicitly-skip-a-test-that-is-marked-as-xfail-how-can-i-get
|
|
|
|
- always report installed 3rd party plugins in the header of a test run
|
|
|
|
- fix issue160: a failing setup of an xfail-marked tests should
|
|
be reported as xfail (not xpass)
|
|
|
|
- fix issue128: show captured output when capsys/capfd are used
|
|
|
|
- fix issue179: properly show the dependency chain of factories
|
|
|
|
- pluginmanager.register(...) now raises ValueError if the
|
|
plugin has been already registered or the name is taken
|
|
|
|
- fix issue159: improve http://pytest.org/latest/faq.html
|
|
especially with respect to the "magic" history, also mention
|
|
pytest-django, trial and unittest integration.
|
|
|
|
- make request.keywords and node.keywords writable. All descendant
|
|
collection nodes will see keyword values. Keywords are dictionaries
|
|
containing markers and other info.
|
|
|
|
- fix issue 178: xml binary escapes are now wrapped in py.xml.raw
|
|
|
|
- fix issue 176: correctly catch the builtin AssertionError
|
|
even when we replaced AssertionError with a subclass on the
|
|
python level
|
|
|
|
- factory discovery no longer fails with magic global callables
|
|
that provide no sane __code__ object (mock.call for example)
|
|
|
|
- fix issue 182: testdir.inprocess_run now considers passed plugins
|
|
|
|
- fix issue 188: ensure sys.exc_info is clear on python2
|
|
before calling into a test
|
|
|
|
- fix issue 191: add unittest TestCase runTest method support
|
|
- fix issue 156: monkeypatch correctly handles class level descriptors
|
|
|
|
- reporting refinements:
|
|
|
|
- pytest_report_header now receives a "startdir" so that
|
|
you can use startdir.bestrelpath(yourpath) to show
|
|
nice relative path
|
|
|
|
- allow plugins to implement both pytest_report_header and
|
|
pytest_sessionstart (sessionstart is invoked first).
|
|
|
|
- don't show deselected reason line if there is none
|
|
|
|
- py.test -vv will show all of assert comparisons instead of truncating
|
|
|
|
2.2.4 (2012-05-22)
|
|
==================
|
|
|
|
- fix error message for rewritten assertions involving the % operator
|
|
- fix issue 126: correctly match all invalid xml characters for junitxml
|
|
binary escape
|
|
- fix issue with unittest: now @unittest.expectedFailure markers should
|
|
be processed correctly (you can also use @pytest.mark markers)
|
|
- document integration with the extended distribute/setuptools test commands
|
|
- fix issue 140: properly get the real functions
|
|
of bound classmethods for setup/teardown_class
|
|
- fix issue #141: switch from the deceased paste.pocoo.org to bpaste.net
|
|
- fix issue #143: call unconfigure/sessionfinish always when
|
|
configure/sessionstart where called
|
|
- fix issue #144: better mangle test ids to junitxml classnames
|
|
- upgrade distribute_setup.py to 0.6.27
|
|
|
|
2.2.3 (2012-02-05)
|
|
==================
|
|
|
|
- fix uploaded package to only include necessary files
|
|
|
|
2.2.2 (2012-02-05)
|
|
==================
|
|
|
|
- fix issue101: wrong args to unittest.TestCase test function now
|
|
produce better output
|
|
- fix issue102: report more useful errors and hints for when a
|
|
test directory was renamed and some pyc/__pycache__ remain
|
|
- fix issue106: allow parametrize to be applied multiple times
|
|
e.g. from module, class and at function level.
|
|
- fix issue107: actually perform session scope finalization
|
|
- don't check in parametrize if indirect parameters are funcarg names
|
|
- add chdir method to monkeypatch funcarg
|
|
- fix crash resulting from calling monkeypatch undo a second time
|
|
- fix issue115: make --collectonly robust against early failure
|
|
(missing files/directories)
|
|
- "-qq --collectonly" now shows only files and the number of tests in them
|
|
- "-q --collectonly" now shows test ids
|
|
- allow adding of attributes to test reports such that it also works
|
|
with distributed testing (no upgrade of pytest-xdist needed)
|
|
|
|
2.2.1 (2011-12-16)
|
|
==================
|
|
|
|
- fix issue99 (in pytest and py) internallerrors with resultlog now
|
|
produce better output - fixed by normalizing pytest_internalerror
|
|
input arguments.
|
|
- fix issue97 / traceback issues (in pytest and py) improve traceback output
|
|
in conjunction with jinja2 and cython which hack tracebacks
|
|
- fix issue93 (in pytest and pytest-xdist) avoid "delayed teardowns":
|
|
the final test in a test node will now run its teardown directly
|
|
instead of waiting for the end of the session. Thanks Dave Hunt for
|
|
the good reporting and feedback. The pytest_runtest_protocol as well
|
|
as the pytest_runtest_teardown hooks now have "nextitem" available
|
|
which will be None indicating the end of the test run.
|
|
- fix collection crash due to unknown-source collected items, thanks
|
|
to Ralf Schmitt (fixed by depending on a more recent pylib)
|
|
|
|
2.2.0 (2011-11-18)
|
|
==================
|
|
|
|
- fix issue90: introduce eager tearing down of test items so that
|
|
teardown function are called earlier.
|
|
- add an all-powerful metafunc.parametrize function which allows to
|
|
parametrize test function arguments in multiple steps and therefore
|
|
from independent plugins and places.
|
|
- add a @pytest.mark.parametrize helper which allows to easily
|
|
call a test function with different argument values
|
|
- Add examples to the "parametrize" example page, including a quick port
|
|
of Test scenarios and the new parametrize function and decorator.
|
|
- introduce registration for "pytest.mark.*" helpers via ini-files
|
|
or through plugin hooks. Also introduce a "--strict" option which
|
|
will treat unregistered markers as errors
|
|
allowing to avoid typos and maintain a well described set of markers
|
|
for your test suite. See exaples at http://pytest.org/latest/mark.html
|
|
and its links.
|
|
- issue50: introduce "-m marker" option to select tests based on markers
|
|
(this is a stricter and more predictable version of '-k' in that "-m"
|
|
only matches complete markers and has more obvious rules for and/or
|
|
semantics.
|
|
- new feature to help optimizing the speed of your tests:
|
|
--durations=N option for displaying N slowest test calls
|
|
and setup/teardown methods.
|
|
- fix issue87: --pastebin now works with python3
|
|
- fix issue89: --pdb with unexpected exceptions in doctest work more sensibly
|
|
- fix and cleanup pytest's own test suite to not leak FDs
|
|
- fix issue83: link to generated funcarg list
|
|
- fix issue74: pyarg module names are now checked against imp.find_module false positives
|
|
- fix compatibility with twisted/trial-11.1.0 use cases
|
|
- simplify Node.listchain
|
|
- simplify junitxml output code by relying on py.xml
|
|
- add support for skip properties on unittest classes and functions
|
|
|
|
2.1.3 (2011-10-18)
|
|
==================
|
|
|
|
- fix issue79: assertion rewriting failed on some comparisons in boolops
|
|
- correctly handle zero length arguments (a la pytest '')
|
|
- fix issue67 / junitxml now contains correct test durations, thanks ronny
|
|
- fix issue75 / skipping test failure on jython
|
|
- fix issue77 / Allow assertrepr_compare hook to apply to a subset of tests
|
|
|
|
2.1.2 (2011-09-24)
|
|
==================
|
|
|
|
- fix assertion rewriting on files with windows newlines on some Python versions
|
|
- refine test discovery by package/module name (--pyargs), thanks Florian Mayer
|
|
- fix issue69 / assertion rewriting fixed on some boolean operations
|
|
- fix issue68 / packages now work with assertion rewriting
|
|
- fix issue66: use different assertion rewriting caches when the -O option is passed
|
|
- don't try assertion rewriting on Jython, use reinterp
|
|
|
|
2.1.1
|
|
=====
|
|
|
|
- fix issue64 / pytest.set_trace now works within pytest_generate_tests hooks
|
|
- fix issue60 / fix error conditions involving the creation of __pycache__
|
|
- fix issue63 / assertion rewriting on inserts involving strings containing '%'
|
|
- fix assertion rewriting on calls with a ** arg
|
|
- don't cache rewritten modules if bytecode generation is disabled
|
|
- fix assertion rewriting in read-only directories
|
|
- fix issue59: provide system-out/err tags for junitxml output
|
|
- fix issue61: assertion rewriting on boolean operations with 3 or more operands
|
|
- you can now build a man page with "cd doc ; make man"
|
|
|
|
2.1.0 (2011-07-09)
|
|
==================
|
|
|
|
- fix issue53 call nosestyle setup functions with correct ordering
|
|
- fix issue58 and issue59: new assertion code fixes
|
|
- merge Benjamin's assertionrewrite branch: now assertions
|
|
for test modules on python 2.6 and above are done by rewriting
|
|
the AST and saving the pyc file before the test module is imported.
|
|
see doc/assert.txt for more info.
|
|
- fix issue43: improve doctests with better traceback reporting on
|
|
unexpected exceptions
|
|
- fix issue47: timing output in junitxml for test cases is now correct
|
|
- fix issue48: typo in MarkInfo repr leading to exception
|
|
- fix issue49: avoid confusing error when initizaliation partially fails
|
|
- fix issue44: env/username expansion for junitxml file path
|
|
- show releaselevel information in test runs for pypy
|
|
- reworked doc pages for better navigation and PDF generation
|
|
- report KeyboardInterrupt even if interrupted during session startup
|
|
- fix issue 35 - provide PDF doc version and download link from index page
|
|
|
|
2.0.3 (2011-05-11)
|
|
==================
|
|
|
|
- fix issue38: nicer tracebacks on calls to hooks, particularly early
|
|
configure/sessionstart ones
|
|
|
|
- fix missing skip reason/meta information in junitxml files, reported
|
|
via http://lists.idyll.org/pipermail/testing-in-python/2011-March/003928.html
|
|
|
|
- fix issue34: avoid collection failure with "test" prefixed classes
|
|
deriving from object.
|
|
|
|
- don't require zlib (and other libs) for genscript plugin without
|
|
--genscript actually being used.
|
|
|
|
- speed up skips (by not doing a full traceback representation
|
|
internally)
|
|
|
|
- fix issue37: avoid invalid characters in junitxml's output
|
|
|
|
2.0.2 (2011-03-09)
|
|
==================
|
|
|
|
- tackle issue32 - speed up test runs of very quick test functions
|
|
by reducing the relative overhead
|
|
|
|
- fix issue30 - extended xfail/skipif handling and improved reporting.
|
|
If you have a syntax error in your skip/xfail
|
|
expressions you now get nice error reports.
|
|
|
|
Also you can now access module globals from xfail/skipif
|
|
expressions so that this for example works now::
|
|
|
|
import pytest
|
|
import mymodule
|
|
@pytest.mark.skipif("mymodule.__version__[0] == "1")
|
|
def test_function():
|
|
pass
|
|
|
|
This will not run the test function if the module's version string
|
|
does not start with a "1". Note that specifying a string instead
|
|
of a boolean expressions allows py.test to report meaningful information
|
|
when summarizing a test run as to what conditions lead to skipping
|
|
(or xfail-ing) tests.
|
|
|
|
- fix issue28 - setup_method and pytest_generate_tests work together
|
|
The setup_method fixture method now gets called also for
|
|
test function invocations generated from the pytest_generate_tests
|
|
hook.
|
|
|
|
- fix issue27 - collectonly and keyword-selection (-k) now work together
|
|
Also, if you do "py.test --collectonly -q" you now get a flat list
|
|
of test ids that you can use to paste to the py.test commandline
|
|
in order to execute a particular test.
|
|
|
|
- fix issue25 avoid reported problems with --pdb and python3.2/encodings output
|
|
|
|
- fix issue23 - tmpdir argument now works on Python3.2 and WindowsXP
|
|
Starting with Python3.2 os.symlink may be supported. By requiring
|
|
a newer py lib version the py.path.local() implementation acknowledges
|
|
this.
|
|
|
|
- fixed typos in the docs (thanks Victor Garcia, Brianna Laugher) and particular
|
|
thanks to Laura Creighton who also reviewed parts of the documentation.
|
|
|
|
- fix slightly wrong output of verbose progress reporting for classes
|
|
(thanks Amaury)
|
|
|
|
- more precise (avoiding of) deprecation warnings for node.Class|Function accesses
|
|
|
|
- avoid std unittest assertion helper code in tracebacks (thanks Ronny)
|
|
|
|
2.0.1 (2011-02-07)
|
|
==================
|
|
|
|
- refine and unify initial capturing so that it works nicely
|
|
even if the logging module is used on an early-loaded conftest.py
|
|
file or plugin.
|
|
- allow to omit "()" in test ids to allow for uniform test ids
|
|
as produced by Alfredo's nice pytest.vim plugin.
|
|
- fix issue12 - show plugin versions with "--version" and
|
|
"--traceconfig" and also document how to add extra information
|
|
to reporting test header
|
|
- fix issue17 (import-* reporting issue on python3) by
|
|
requiring py>1.4.0 (1.4.1 is going to include it)
|
|
- fix issue10 (numpy arrays truth checking) by refining
|
|
assertion interpretation in py lib
|
|
- fix issue15: make nose compatibility tests compatible
|
|
with python3 (now that nose-1.0 supports python3)
|
|
- remove somewhat surprising "same-conftest" detection because
|
|
it ignores conftest.py when they appear in several subdirs.
|
|
- improve assertions ("not in"), thanks Floris Bruynooghe
|
|
- improve behaviour/warnings when running on top of "python -OO"
|
|
(assertions and docstrings are turned off, leading to potential
|
|
false positives)
|
|
- introduce a pytest_cmdline_processargs(args) hook
|
|
to allow dynamic computation of command line arguments.
|
|
This fixes a regression because py.test prior to 2.0
|
|
allowed to set command line options from conftest.py
|
|
files which so far pytest-2.0 only allowed from ini-files now.
|
|
- fix issue7: assert failures in doctest modules.
|
|
unexpected failures in doctests will not generally
|
|
show nicer, i.e. within the doctest failing context.
|
|
- fix issue9: setup/teardown functions for an xfail-marked
|
|
test will report as xfail if they fail but report as normally
|
|
passing (not xpassing) if they succeed. This only is true
|
|
for "direct" setup/teardown invocations because teardown_class/
|
|
teardown_module cannot closely relate to a single test.
|
|
- fix issue14: no logging errors at process exit
|
|
- refinements to "collecting" output on non-ttys
|
|
- refine internal plugin registration and --traceconfig output
|
|
- introduce a mechanism to prevent/unregister plugins from the
|
|
command line, see http://pytest.org/plugins.html#cmdunregister
|
|
- activate resultlog plugin by default
|
|
- fix regression wrt yielded tests which due to the
|
|
collection-before-running semantics were not
|
|
setup as with pytest 1.3.4. Note, however, that
|
|
the recommended and much cleaner way to do test
|
|
parametraization remains the "pytest_generate_tests"
|
|
mechanism, see the docs.
|
|
|
|
2.0.0 (2010-11-25)
|
|
==================
|
|
|
|
- pytest-2.0 is now its own package and depends on pylib-2.0
|
|
- new ability: python -m pytest / python -m pytest.main ability
|
|
- new python invocation: pytest.main(args, plugins) to load
|
|
some custom plugins early.
|
|
- try harder to run unittest test suites in a more compatible manner
|
|
by deferring setup/teardown semantics to the unittest package.
|
|
also work harder to run twisted/trial and Django tests which
|
|
should now basically work by default.
|
|
- introduce a new way to set config options via ini-style files,
|
|
by default setup.cfg and tox.ini files are searched. The old
|
|
ways (certain environment variables, dynamic conftest.py reading
|
|
is removed).
|
|
- add a new "-q" option which decreases verbosity and prints a more
|
|
nose/unittest-style "dot" output.
|
|
- fix issue135 - marks now work with unittest test cases as well
|
|
- fix issue126 - introduce py.test.set_trace() to trace execution via
|
|
PDB during the running of tests even if capturing is ongoing.
|
|
- fix issue123 - new "python -m py.test" invocation for py.test
|
|
(requires Python 2.5 or above)
|
|
- fix issue124 - make reporting more resilient against tests opening
|
|
files on filedescriptor 1 (stdout).
|
|
- fix issue109 - sibling conftest.py files will not be loaded.
|
|
(and Directory collectors cannot be customized anymore from a Directory's
|
|
conftest.py - this needs to happen at least one level up).
|
|
- introduce (customizable) assertion failure representations and enhance
|
|
output on assertion failures for comparisons and other cases (Floris Bruynooghe)
|
|
- nose-plugin: pass through type-signature failures in setup/teardown
|
|
functions instead of not calling them (Ed Singleton)
|
|
- remove py.test.collect.Directory (follows from a major refactoring
|
|
and simplification of the collection process)
|
|
- majorly reduce py.test core code, shift function/python testing to own plugin
|
|
- fix issue88 (finding custom test nodes from command line arg)
|
|
- refine 'tmpdir' creation, will now create basenames better associated
|
|
with test names (thanks Ronny)
|
|
- "xpass" (unexpected pass) tests don't cause exitcode!=0
|
|
- fix issue131 / issue60 - importing doctests in __init__ files used as namespace packages
|
|
- fix issue93 stdout/stderr is captured while importing conftest.py
|
|
- fix bug: unittest collected functions now also can have "pytestmark"
|
|
applied at class/module level
|
|
- add ability to use "class" level for cached_setup helper
|
|
- fix strangeness: mark.* objects are now immutable, create new instances
|
|
|
|
1.3.4 (2010-09-14)
|
|
==================
|
|
|
|
- fix issue111: improve install documentation for windows
|
|
- fix issue119: fix custom collectability of __init__.py as a module
|
|
- fix issue116: --doctestmodules work with __init__.py files as well
|
|
- fix issue115: unify internal exception passthrough/catching/GeneratorExit
|
|
- fix issue118: new --tb=native for presenting cpython-standard exceptions
|
|
|
|
1.3.3 (2010-07-30)
|
|
==================
|
|
|
|
- fix issue113: assertion representation problem with triple-quoted strings
|
|
(and possibly other cases)
|
|
- make conftest loading detect that a conftest file with the same
|
|
content was already loaded, avoids surprises in nested directory structures
|
|
which can be produced e.g. by Hudson. It probably removes the need to use
|
|
--confcutdir in most cases.
|
|
- fix terminal coloring for win32
|
|
(thanks Michael Foord for reporting)
|
|
- fix weirdness: make terminal width detection work on stdout instead of stdin
|
|
(thanks Armin Ronacher for reporting)
|
|
- remove trailing whitespace in all py/text distribution files
|
|
|
|
1.3.2 (2010-07-08)
|
|
==================
|
|
|
|
**New features**
|
|
|
|
- fix issue103: introduce py.test.raises as context manager, examples::
|
|
|
|
with py.test.raises(ZeroDivisionError):
|
|
x = 0
|
|
1 / x
|
|
|
|
with py.test.raises(RuntimeError) as excinfo:
|
|
call_something()
|
|
|
|
# you may do extra checks on excinfo.value|type|traceback here
|
|
|
|
(thanks Ronny Pfannschmidt)
|
|
|
|
- Funcarg factories can now dynamically apply a marker to a
|
|
test invocation. This is for example useful if a factory
|
|
provides parameters to a test which are expected-to-fail::
|
|
|
|
def pytest_funcarg__arg(request):
|
|
request.applymarker(py.test.mark.xfail(reason="flaky config"))
|
|
...
|
|
|
|
def test_function(arg):
|
|
...
|
|
|
|
- improved error reporting on collection and import errors. This makes
|
|
use of a more general mechanism, namely that for custom test item/collect
|
|
nodes ``node.repr_failure(excinfo)`` is now uniformly called so that you can
|
|
override it to return a string error representation of your choice
|
|
which is going to be reported as a (red) string.
|
|
|
|
- introduce '--junitprefix=STR' option to prepend a prefix
|
|
to all reports in the junitxml file.
|
|
|
|
**Bug fixes**
|
|
|
|
- make tests and the ``pytest_recwarn`` plugin in particular fully compatible
|
|
to Python2.7 (if you use the ``recwarn`` funcarg warnings will be enabled so that
|
|
you can properly check for their existence in a cross-python manner).
|
|
- refine --pdb: ignore xfailed tests, unify its TB-reporting and
|
|
don't display failures again at the end.
|
|
- fix assertion interpretation with the ** operator (thanks Benjamin Peterson)
|
|
- fix issue105 assignment on the same line as a failing assertion (thanks Benjamin Peterson)
|
|
- fix issue104 proper escaping for test names in junitxml plugin (thanks anonymous)
|
|
- fix issue57 -f|--looponfail to work with xpassing tests (thanks Ronny)
|
|
- fix issue92 collectonly reporter and --pastebin (thanks Benjamin Peterson)
|
|
- fix py.code.compile(source) to generate unique filenames
|
|
- fix assertion re-interp problems on PyPy, by defering code
|
|
compilation to the (overridable) Frame.eval class. (thanks Amaury Forgeot)
|
|
- fix py.path.local.pyimport() to work with directories
|
|
- streamline py.path.local.mkdtemp implementation and usage
|
|
- don't print empty lines when showing junitxml-filename
|
|
- add optional boolean ignore_errors parameter to py.path.local.remove
|
|
- fix terminal writing on win32/python2.4
|
|
- py.process.cmdexec() now tries harder to return properly encoded unicode objects
|
|
on all python versions
|
|
- install plain py.test/py.which scripts also for Jython, this helps to
|
|
get canonical script paths in virtualenv situations
|
|
- make path.bestrelpath(path) return ".", note that when calling
|
|
X.bestrelpath the assumption is that X is a directory.
|
|
- make initial conftest discovery ignore "--" prefixed arguments
|
|
- fix resultlog plugin when used in a multicpu/multihost xdist situation
|
|
(thanks Jakub Gustak)
|
|
- perform distributed testing related reporting in the xdist-plugin
|
|
rather than having dist-related code in the generic py.test
|
|
distribution
|
|
- fix homedir detection on Windows
|
|
- ship distribute_setup.py version 0.6.13
|
|
|
|
1.3.1 (2010-05-25)
|
|
==================
|
|
|
|
**New features**
|
|
|
|
- issue91: introduce new py.test.xfail(reason) helper
|
|
to imperatively mark a test as expected to fail. Can
|
|
be used from within setup and test functions. This is
|
|
useful especially for parametrized tests when certain
|
|
configurations are expected-to-fail. In this case the
|
|
declarative approach with the @py.test.mark.xfail cannot
|
|
be used as it would mark all configurations as xfail.
|
|
|
|
- issue102: introduce new --maxfail=NUM option to stop
|
|
test runs after NUM failures. This is a generalization
|
|
of the '-x' or '--exitfirst' option which is now equivalent
|
|
to '--maxfail=1'. Both '-x' and '--maxfail' will
|
|
now also print a line near the end indicating the Interruption.
|
|
|
|
- issue89: allow py.test.mark decorators to be used on classes
|
|
(class decorators were introduced with python2.6) and
|
|
also allow to have multiple markers applied at class/module level
|
|
by specifying a list.
|
|
|
|
- improve and refine letter reporting in the progress bar:
|
|
. pass
|
|
f failed test
|
|
s skipped tests (reminder: use for dependency/platform mismatch only)
|
|
x xfailed test (test that was expected to fail)
|
|
X xpassed test (test that was expected to fail but passed)
|
|
|
|
You can use any combination of 'fsxX' with the '-r' extended
|
|
reporting option. The xfail/xpass results will show up as
|
|
skipped tests in the junitxml output - which also fixes
|
|
issue99.
|
|
|
|
- make py.test.cmdline.main() return the exitstatus instead of raising
|
|
SystemExit and also allow it to be called multiple times. This of
|
|
course requires that your application and tests are properly teared
|
|
down and don't have global state.
|
|
|
|
**Bug Fixes**
|
|
|
|
- improved traceback presentation:
|
|
- improved and unified reporting for "--tb=short" option
|
|
- Errors during test module imports are much shorter, (using --tb=short style)
|
|
- raises shows shorter more relevant tracebacks
|
|
- --fulltrace now more systematically makes traces longer / inhibits cutting
|
|
|
|
- improve support for raises and other dynamically compiled code by
|
|
manipulating python's linecache.cache instead of the previous
|
|
rather hacky way of creating custom code objects. This makes
|
|
it seemlessly work on Jython and PyPy where it previously didn't.
|
|
|
|
- fix issue96: make capturing more resilient against Control-C
|
|
interruptions (involved somewhat substantial refactoring
|
|
to the underlying capturing functionality to avoid race
|
|
conditions).
|
|
|
|
- fix chaining of conditional skipif/xfail decorators - so it works now
|
|
as expected to use multiple @py.test.mark.skipif(condition) decorators,
|
|
including specific reporting which of the conditions lead to skipping.
|
|
|
|
- fix issue95: late-import zlib so that it's not required
|
|
for general py.test startup.
|
|
|
|
- fix issue94: make reporting more robust against bogus source code
|
|
(and internally be more careful when presenting unexpected byte sequences)
|
|
|
|
|
|
1.3.0 (2010-05-05)
|
|
==================
|
|
|
|
- deprecate --report option in favour of a new shorter and easier to
|
|
remember -r option: it takes a string argument consisting of any
|
|
combination of 'xfsX' characters. They relate to the single chars
|
|
you see during the dotted progress printing and will print an extra line
|
|
per test at the end of the test run. This extra line indicates the exact
|
|
position or test ID that you directly paste to the py.test cmdline in order
|
|
to re-run a particular test.
|
|
|
|
- allow external plugins to register new hooks via the new
|
|
pytest_addhooks(pluginmanager) hook. The new release of
|
|
the pytest-xdist plugin for distributed and looponfailing
|
|
testing requires this feature.
|
|
|
|
- add a new pytest_ignore_collect(path, config) hook to allow projects and
|
|
plugins to define exclusion behaviour for their directory structure -
|
|
for example you may define in a conftest.py this method::
|
|
|
|
def pytest_ignore_collect(path):
|
|
return path.check(link=1)
|
|
|
|
to prevent even a collection try of any tests in symlinked dirs.
|
|
|
|
- new pytest_pycollect_makemodule(path, parent) hook for
|
|
allowing customization of the Module collection object for a
|
|
matching test module.
|
|
|
|
- extend and refine xfail mechanism:
|
|
``@py.test.mark.xfail(run=False)`` do not run the decorated test
|
|
``@py.test.mark.xfail(reason="...")`` prints the reason string in xfail summaries
|
|
specifying ``--runxfail`` on command line virtually ignores xfail markers
|
|
|
|
- expose (previously internal) commonly useful methods:
|
|
py.io.get_terminal_with() -> return terminal width
|
|
py.io.ansi_print(...) -> print colored/bold text on linux/win32
|
|
py.io.saferepr(obj) -> return limited representation string
|
|
|
|
- expose test outcome related exceptions as py.test.skip.Exception,
|
|
py.test.raises.Exception etc., useful mostly for plugins
|
|
doing special outcome interpretation/tweaking
|
|
|
|
- (issue85) fix junitxml plugin to handle tests with non-ascii output
|
|
|
|
- fix/refine python3 compatibility (thanks Benjamin Peterson)
|
|
|
|
- fixes for making the jython/win32 combination work, note however:
|
|
jython2.5.1/win32 does not provide a command line launcher, see
|
|
http://bugs.jython.org/issue1491 . See pylib install documentation
|
|
for how to work around.
|
|
|
|
- fixes for handling of unicode exception values and unprintable objects
|
|
|
|
- (issue87) fix unboundlocal error in assertionold code
|
|
|
|
- (issue86) improve documentation for looponfailing
|
|
|
|
- refine IO capturing: stdin-redirect pseudo-file now has a NOP close() method
|
|
|
|
- ship distribute_setup.py version 0.6.10
|
|
|
|
- added links to the new capturelog and coverage plugins
|
|
|
|
|
|
1.2.0 (2010-01-18)
|
|
==================
|
|
|
|
- refined usage and options for "py.cleanup"::
|
|
|
|
py.cleanup # remove "*.pyc" and "*$py.class" (jython) files
|
|
py.cleanup -e .swp -e .cache # also remove files with these extensions
|
|
py.cleanup -s # remove "build" and "dist" directory next to setup.py files
|
|
py.cleanup -d # also remove empty directories
|
|
py.cleanup -a # synonym for "-s -d -e 'pip-log.txt'"
|
|
py.cleanup -n # dry run, only show what would be removed
|
|
|
|
- add a new option "py.test --funcargs" which shows available funcargs
|
|
and their help strings (docstrings on their respective factory function)
|
|
for a given test path
|
|
|
|
- display a short and concise traceback if a funcarg lookup fails
|
|
|
|
- early-load "conftest.py" files in non-dot first-level sub directories.
|
|
allows to conveniently keep and access test-related options in a ``test``
|
|
subdir and still add command line options.
|
|
|
|
- fix issue67: new super-short traceback-printing option: "--tb=line" will print a single line for each failing (python) test indicating its filename, lineno and the failure value
|
|
|
|
- fix issue78: always call python-level teardown functions even if the
|
|
according setup failed. This includes refinements for calling setup_module/class functions
|
|
which will now only be called once instead of the previous behaviour where they'd be called
|
|
multiple times if they raise an exception (including a Skipped exception). Any exception
|
|
will be re-corded and associated with all tests in the according module/class scope.
|
|
|
|
- fix issue63: assume <40 columns to be a bogus terminal width, default to 80
|
|
|
|
- fix pdb debugging to be in the correct frame on raises-related errors
|
|
|
|
- update apipkg.py to fix an issue where recursive imports might
|
|
unnecessarily break importing
|
|
|
|
- fix plugin links
|
|
|
|
1.1.1 (2009-11-24)
|
|
==================
|
|
|
|
- moved dist/looponfailing from py.test core into a new
|
|
separately released pytest-xdist plugin.
|
|
|
|
- new junitxml plugin: --junitxml=path will generate a junit style xml file
|
|
which is processable e.g. by the Hudson CI system.
|
|
|
|
- new option: --genscript=path will generate a standalone py.test script
|
|
which will not need any libraries installed. thanks to Ralf Schmitt.
|
|
|
|
- new option: --ignore will prevent specified path from collection.
|
|
Can be specified multiple times.
|
|
|
|
- new option: --confcutdir=dir will make py.test only consider conftest
|
|
files that are relative to the specified dir.
|
|
|
|
- new funcarg: "pytestconfig" is the pytest config object for access
|
|
to command line args and can now be easily used in a test.
|
|
|
|
- install ``py.test`` and ``py.which`` with a ``-$VERSION`` suffix to
|
|
disambiguate between Python3, python2.X, Jython and PyPy installed versions.
|
|
|
|
- new "pytestconfig" funcarg allows access to test config object
|
|
|
|
- new "pytest_report_header" hook can return additional lines
|
|
to be displayed at the header of a test run.
|
|
|
|
- (experimental) allow "py.test path::name1::name2::..." for pointing
|
|
to a test within a test collection directly. This might eventually
|
|
evolve as a full substitute to "-k" specifications.
|
|
|
|
- streamlined plugin loading: order is now as documented in
|
|
customize.html: setuptools, ENV, commandline, conftest.
|
|
also setuptools entry point names are turned to canonical namees ("pytest_*")
|
|
|
|
- automatically skip tests that need 'capfd' but have no os.dup
|
|
|
|
- allow pytest_generate_tests to be defined in classes as well
|
|
|
|
- deprecate usage of 'disabled' attribute in favour of pytestmark
|
|
- deprecate definition of Directory, Module, Class and Function nodes
|
|
in conftest.py files. Use pytest collect hooks instead.
|
|
|
|
- collection/item node specific runtest/collect hooks are only called exactly
|
|
on matching conftest.py files, i.e. ones which are exactly below
|
|
the filesystem path of an item
|
|
|
|
- change: the first pytest_collect_directory hook to return something
|
|
will now prevent further hooks to be called.
|
|
|
|
- change: figleaf plugin now requires --figleaf to run. Also
|
|
change its long command line options to be a bit shorter (see py.test -h).
|
|
|
|
- change: pytest doctest plugin is now enabled by default and has a
|
|
new option --doctest-glob to set a pattern for file matches.
|
|
|
|
- change: remove internal py._* helper vars, only keep py._pydir
|
|
|
|
- robustify capturing to survive if custom pytest_runtest_setup
|
|
code failed and prevented the capturing setup code from running.
|
|
|
|
- make py.test.* helpers provided by default plugins visible early -
|
|
works transparently both for pydoc and for interactive sessions
|
|
which will regularly see e.g. py.test.mark and py.test.importorskip.
|
|
|
|
- simplify internal plugin manager machinery
|
|
- simplify internal collection tree by introducing a RootCollector node
|
|
|
|
- fix assert reinterpreation that sees a call containing "keyword=..."
|
|
|
|
- fix issue66: invoke pytest_sessionstart and pytest_sessionfinish
|
|
hooks on slaves during dist-testing, report module/session teardown
|
|
hooks correctly.
|
|
|
|
- fix issue65: properly handle dist-testing if no
|
|
execnet/py lib installed remotely.
|
|
|
|
- skip some install-tests if no execnet is available
|
|
|
|
- fix docs, fix internal bin/ script generation
|
|
|
|
|
|
1.1.0 (2009-11-05)
|
|
==================
|
|
|
|
- introduce automatic plugin registration via 'pytest11'
|
|
entrypoints via setuptools' pkg_resources.iter_entry_points
|
|
|
|
- fix py.test dist-testing to work with execnet >= 1.0.0b4
|
|
|
|
- re-introduce py.test.cmdline.main() for better backward compatibility
|
|
|
|
- svn paths: fix a bug with path.check(versioned=True) for svn paths,
|
|
allow '%' in svn paths, make svnwc.update() default to interactive mode
|
|
like in 1.0.x and add svnwc.update(interactive=False) to inhibit interaction.
|
|
|
|
- refine distributed tarball to contain test and no pyc files
|
|
|
|
- try harder to have deprecation warnings for py.compat.* accesses
|
|
report a correct location
|
|
|
|
1.0.3
|
|
=====
|
|
|
|
* adjust and improve docs
|
|
|
|
* remove py.rest tool and internal namespace - it was
|
|
never really advertised and can still be used with
|
|
the old release if needed. If there is interest
|
|
it could be revived into its own tool i guess.
|
|
|
|
* fix issue48 and issue59: raise an Error if the module
|
|
from an imported test file does not seem to come from
|
|
the filepath - avoids "same-name" confusion that has
|
|
been reported repeatedly
|
|
|
|
* merged Ronny's nose-compatibility hacks: now
|
|
nose-style setup_module() and setup() functions are
|
|
supported
|
|
|
|
* introduce generalized py.test.mark function marking
|
|
|
|
* reshuffle / refine command line grouping
|
|
|
|
* deprecate parser.addgroup in favour of getgroup which creates option group
|
|
|
|
* add --report command line option that allows to control showing of skipped/xfailed sections
|
|
|
|
* generalized skipping: a new way to mark python functions with skipif or xfail
|
|
at function, class and modules level based on platform or sys-module attributes.
|
|
|
|
* extend py.test.mark decorator to allow for positional args
|
|
|
|
* introduce and test "py.cleanup -d" to remove empty directories
|
|
|
|
* fix issue #59 - robustify unittest test collection
|
|
|
|
* make bpython/help interaction work by adding an __all__ attribute
|
|
to ApiModule, cleanup initpkg
|
|
|
|
* use MIT license for pylib, add some contributors
|
|
|
|
* remove py.execnet code and substitute all usages with 'execnet' proper
|
|
|
|
* fix issue50 - cached_setup now caches more to expectations
|
|
for test functions with multiple arguments.
|
|
|
|
* merge Jarko's fixes, issue #45 and #46
|
|
|
|
* add the ability to specify a path for py.lookup to search in
|
|
|
|
* fix a funcarg cached_setup bug probably only occurring
|
|
in distributed testing and "module" scope with teardown.
|
|
|
|
* many fixes and changes for making the code base python3 compatible,
|
|
many thanks to Benjamin Peterson for helping with this.
|
|
|
|
* consolidate builtins implementation to be compatible with >=2.3,
|
|
add helpers to ease keeping 2 and 3k compatible code
|
|
|
|
* deprecate py.compat.doctest|subprocess|textwrap|optparse
|
|
|
|
* deprecate py.magic.autopath, remove py/magic directory
|
|
|
|
* move pytest assertion handling to py/code and a pytest_assertion
|
|
plugin, add "--no-assert" option, deprecate py.magic namespaces
|
|
in favour of (less) py.code ones.
|
|
|
|
* consolidate and cleanup py/code classes and files
|
|
|
|
* cleanup py/misc, move tests to bin-for-dist
|
|
|
|
* introduce delattr/delitem/delenv methods to py.test's monkeypatch funcarg
|
|
|
|
* consolidate py.log implementation, remove old approach.
|
|
|
|
* introduce py.io.TextIO and py.io.BytesIO for distinguishing between
|
|
text/unicode and byte-streams (uses underlying standard lib io.*
|
|
if available)
|
|
|
|
* make py.unittest_convert helper script available which converts "unittest.py"
|
|
style files into the simpler assert/direct-test-classes py.test/nosetests
|
|
style. The script was written by Laura Creighton.
|
|
|
|
* simplified internal localpath implementation
|
|
|
|
1.0.2 (2009-08-27)
|
|
==================
|
|
|
|
* fixing packaging issues, triggered by fedora redhat packaging,
|
|
also added doc, examples and contrib dirs to the tarball.
|
|
|
|
* added a documentation link to the new django plugin.
|
|
|
|
1.0.1 (2009-08-19)
|
|
==================
|
|
|
|
* added a 'pytest_nose' plugin which handles nose.SkipTest,
|
|
nose-style function/method/generator setup/teardown and
|
|
tries to report functions correctly.
|
|
|
|
* capturing of unicode writes or encoded strings to sys.stdout/err
|
|
work better, also terminalwriting was adapted and somewhat
|
|
unified between windows and linux.
|
|
|
|
* improved documentation layout and content a lot
|
|
|
|
* added a "--help-config" option to show conftest.py / ENV-var names for
|
|
all longopt cmdline options, and some special conftest.py variables.
|
|
renamed 'conf_capture' conftest setting to 'option_capture' accordingly.
|
|
|
|
* fix issue #27: better reporting on non-collectable items given on commandline
|
|
(e.g. pyc files)
|
|
|
|
* fix issue #33: added --version flag (thanks Benjamin Peterson)
|
|
|
|
* fix issue #32: adding support for "incomplete" paths to wcpath.status()
|
|
|
|
* "Test" prefixed classes are *not* collected by default anymore if they
|
|
have an __init__ method
|
|
|
|
* monkeypatch setenv() now accepts a "prepend" parameter
|
|
|
|
* improved reporting of collection error tracebacks
|
|
|
|
* simplified multicall mechanism and plugin architecture,
|
|
renamed some internal methods and argnames
|
|
|
|
1.0.0 (2009-08-04)
|
|
==================
|
|
|
|
* more terse reporting try to show filesystem path relatively to current dir
|
|
* improve xfail output a bit
|
|
|
|
1.0.0b9 (2009-07-31)
|
|
====================
|
|
|
|
* cleanly handle and report final teardown of test setup
|
|
|
|
* fix svn-1.6 compat issue with py.path.svnwc().versioned()
|
|
(thanks Wouter Vanden Hove)
|
|
|
|
* setup/teardown or collection problems now show as ERRORs
|
|
or with big "E"'s in the progress lines. they are reported
|
|
and counted separately.
|
|
|
|
* dist-testing: properly handle test items that get locally
|
|
collected but cannot be collected on the remote side - often
|
|
due to platform/dependency reasons
|
|
|
|
* simplified py.test.mark API - see keyword plugin documentation
|
|
|
|
* integrate better with logging: capturing now by default captures
|
|
test functions and their immediate setup/teardown in a single stream
|
|
|
|
* capsys and capfd funcargs now have a readouterr() and a close() method
|
|
(underlyingly py.io.StdCapture/FD objects are used which grew a
|
|
readouterr() method as well to return snapshots of captured out/err)
|
|
|
|
* make assert-reinterpretation work better with comparisons not
|
|
returning bools (reported with numpy from thanks maciej fijalkowski)
|
|
|
|
* reworked per-test output capturing into the pytest_iocapture.py plugin
|
|
and thus removed capturing code from config object
|
|
|
|
* item.repr_failure(excinfo) instead of item.repr_failure(excinfo, outerr)
|
|
|
|
|
|
1.0.0b8 (2009-07-22)
|
|
====================
|
|
|
|
* pytest_unittest-plugin is now enabled by default
|
|
|
|
* introduced pytest_keyboardinterrupt hook and
|
|
refined pytest_sessionfinish hooked, added tests.
|
|
|
|
* workaround a buggy logging module interaction ("closing already closed
|
|
files"). Thanks to Sridhar Ratnakumar for triggering.
|
|
|
|
* if plugins use "py.test.importorskip" for importing
|
|
a dependency only a warning will be issued instead
|
|
of exiting the testing process.
|
|
|
|
* many improvements to docs:
|
|
- refined funcargs doc , use the term "factory" instead of "provider"
|
|
- added a new talk/tutorial doc page
|
|
- better download page
|
|
- better plugin docstrings
|
|
- added new plugins page and automatic doc generation script
|
|
|
|
* fixed teardown problem related to partially failing funcarg setups
|
|
(thanks MrTopf for reporting), "pytest_runtest_teardown" is now
|
|
always invoked even if the "pytest_runtest_setup" failed.
|
|
|
|
* tweaked doctest output for docstrings in py modules,
|
|
thanks Radomir.
|
|
|
|
1.0.0b7
|
|
=======
|
|
|
|
* renamed py.test.xfail back to py.test.mark.xfail to avoid
|
|
two ways to decorate for xfail
|
|
|
|
* re-added py.test.mark decorator for setting keywords on functions
|
|
(it was actually documented so removing it was not nice)
|
|
|
|
* remove scope-argument from request.addfinalizer() because
|
|
request.cached_setup has the scope arg. TOOWTDI.
|
|
|
|
* perform setup finalization before reporting failures
|
|
|
|
* apply modified patches from Andreas Kloeckner to allow
|
|
test functions to have no func_code (#22) and to make
|
|
"-k" and function keywords work (#20)
|
|
|
|
* apply patch from Daniel Peolzleithner (issue #23)
|
|
|
|
* resolve issue #18, multiprocessing.Manager() and
|
|
redirection clash
|
|
|
|
* make __name__ == "__channelexec__" for remote_exec code
|
|
|
|
1.0.0b3 (2009-06-19)
|
|
====================
|
|
|
|
* plugin classes are removed: one now defines
|
|
hooks directly in conftest.py or global pytest_*.py
|
|
files.
|
|
|
|
* added new pytest_namespace(config) hook that allows
|
|
to inject helpers directly to the py.test.* namespace.
|
|
|
|
* documented and refined many hooks
|
|
|
|
* added new style of generative tests via
|
|
pytest_generate_tests hook that integrates
|
|
well with function arguments.
|
|
|
|
|
|
1.0.0b1
|
|
=======
|
|
|
|
* introduced new "funcarg" setup method,
|
|
see doc/test/funcarg.txt
|
|
|
|
* introduced plugin architecture and many
|
|
new py.test plugins, see
|
|
doc/test/plugins.txt
|
|
|
|
* teardown_method is now guaranteed to get
|
|
called after a test method has run.
|
|
|
|
* new method: py.test.importorskip(mod,minversion)
|
|
will either import or call py.test.skip()
|
|
|
|
* completely revised internal py.test architecture
|
|
|
|
* new py.process.ForkedFunc object allowing to
|
|
fork execution of a function to a sub process
|
|
and getting a result back.
|
|
|
|
XXX lots of things missing here XXX
|
|
|
|
0.9.2
|
|
=====
|
|
|
|
* refined installation and metadata, created new setup.py,
|
|
now based on setuptools/ez_setup (thanks to Ralf Schmitt
|
|
for his support).
|
|
|
|
* improved the way of making py.* scripts available in
|
|
windows environments, they are now added to the
|
|
Scripts directory as ".cmd" files.
|
|
|
|
* py.path.svnwc.status() now is more complete and
|
|
uses xml output from the 'svn' command if available
|
|
(Guido Wesdorp)
|
|
|
|
* fix for py.path.svn* to work with svn 1.5
|
|
(Chris Lamb)
|
|
|
|
* fix path.relto(otherpath) method on windows to
|
|
use normcase for checking if a path is relative.
|
|
|
|
* py.test's traceback is better parseable from editors
|
|
(follows the filenames:LINENO: MSG convention)
|
|
(thanks to Osmo Salomaa)
|
|
|
|
* fix to javascript-generation, "py.test --runbrowser"
|
|
should work more reliably now
|
|
|
|
* removed previously accidentally added
|
|
py.test.broken and py.test.notimplemented helpers.
|
|
|
|
* there now is a py.__version__ attribute
|
|
|
|
0.9.1
|
|
=====
|
|
|
|
This is a fairly complete list of v0.9.1, which can
|
|
serve as a reference for developers.
|
|
|
|
* allowing + signs in py.path.svn urls [39106]
|
|
* fixed support for Failed exceptions without excinfo in py.test [39340]
|
|
* added support for killing processes for Windows (as well as platforms that
|
|
support os.kill) in py.misc.killproc [39655]
|
|
* added setup/teardown for generative tests to py.test [40702]
|
|
* added detection of FAILED TO LOAD MODULE to py.test [40703, 40738, 40739]
|
|
* fixed problem with calling .remove() on wcpaths of non-versioned files in
|
|
py.path [44248]
|
|
* fixed some import and inheritance issues in py.test [41480, 44648, 44655]
|
|
* fail to run greenlet tests when pypy is available, but without stackless
|
|
[45294]
|
|
* small fixes in rsession tests [45295]
|
|
* fixed issue with 2.5 type representations in py.test [45483, 45484]
|
|
* made that internal reporting issues displaying is done atomically in py.test
|
|
[45518]
|
|
* made that non-existing files are ignored by the py.lookup script [45519]
|
|
* improved exception name creation in py.test [45535]
|
|
* made that less threads are used in execnet [merge in 45539]
|
|
* removed lock required for atomic reporting issue displaying in py.test
|
|
[45545]
|
|
* removed globals from execnet [45541, 45547]
|
|
* refactored cleanup mechanics, made that setDaemon is set to 1 to make atexit
|
|
get called in 2.5 (py.execnet) [45548]
|
|
* fixed bug in joining threads in py.execnet's servemain [45549]
|
|
* refactored py.test.rsession tests to not rely on exact output format anymore
|
|
[45646]
|
|
* using repr() on test outcome [45647]
|
|
* added 'Reason' classes for py.test.skip() [45648, 45649]
|
|
* killed some unnecessary sanity check in py.test.collect [45655]
|
|
* avoid using os.tmpfile() in py.io.fdcapture because on Windows it's only
|
|
usable by Administrators [45901]
|
|
* added support for locking and non-recursive commits to py.path.svnwc [45994]
|
|
* locking files in py.execnet to prevent CPython from segfaulting [46010]
|
|
* added export() method to py.path.svnurl
|
|
* fixed -d -x in py.test [47277]
|
|
* fixed argument concatenation problem in py.path.svnwc [49423]
|
|
* restore py.test behaviour that it exits with code 1 when there are failures
|
|
[49974]
|
|
* don't fail on html files that don't have an accompanying .txt file [50606]
|
|
* fixed 'utestconvert.py < input' [50645]
|
|
* small fix for code indentation in py.code.source [50755]
|
|
* fix _docgen.py documentation building [51285]
|
|
* improved checks for source representation of code blocks in py.test [51292]
|
|
* added support for passing authentication to py.path.svn* objects [52000,
|
|
52001]
|
|
* removed sorted() call for py.apigen tests in favour of [].sort() to support
|
|
Python 2.3 [52481]
|