Merge branch 'master' into features

This commit is contained in:
Bruno Oliveira 2017-08-01 19:35:56 -03:00
commit 40254b64e5
46 changed files with 232 additions and 60 deletions

View File

@ -8,6 +8,172 @@
.. towncrier release notes start
Pytest 3.2.0 (2017-07-30)
=========================
Deprecations and Removals
-------------------------
- ``pytest.approx`` no longer supports ``>``, ``>=``, ``<`` and ``<=``
operators to avoid surprising/inconsistent behavior. See `the 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)
=========================

View File

@ -54,7 +54,7 @@ How to release pytest
where PYPI_NAME is the name of pypi.python.org as configured in your ``~/.pypirc``
file `for devpi <http://doc.devpi.net/latest/quickstart-releaseprocess.html?highlight=pypirc#devpi-push-releasing-to-an-external-index>`_.
#. After a minor/major release, merge ``features`` into ``master`` and push (or open a PR).
#. After a minor/major release, merge ``release-X.Y.Z`` into ``master`` and push (or open a PR).
.. _devpi-cloud-test: https://github.com/obestwalter/devpi-cloud-test
.. _AppVeyor: https://www.appveyor.com/

View File

@ -1 +0,0 @@
Add support for numpy arrays (and dicts) to approx.

View File

@ -1,2 +0,0 @@
``pytest.approx`` no longer supports ``>``, ``>=``, ``<`` and ``<=`` operators to avoid surprising/inconsistent
behavior. See `the docs <https://docs.pytest.org/en/latest/builtin.html#pytest.approx>`_ for more information.

View File

@ -1 +0,0 @@
Set ``stdin`` to a closed ``PIPE`` in ``pytester.py.Testdir.popen()`` for avoid unwanted interactive ``pdb``

View File

@ -1 +0,0 @@
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.

View File

@ -1 +0,0 @@
Add missing ``encoding`` attribute to ``sys.std*`` streams when using ``capsys`` capture mode.

View File

@ -1 +0,0 @@
introduce deprecation warnings for legacy marks based parametersets

View File

@ -1 +0,0 @@
Update help message for ``--strict`` to make it clear it only deals with unregistered markers, not warnings.

View File

@ -1 +0,0 @@
Internal code move: move code for pytest.approx/pytest.raises to own files in order to cut down the size of python.py

View File

@ -1 +0,0 @@
Fix terminal color changing to black on Windows if ``colorama`` is imported in a ``conftest.py`` file.

View File

@ -1 +0,0 @@
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.

View File

@ -1 +0,0 @@
Collection ignores local virtualenvs by default; `--collect-in-virtualenv` overrides this behavior.

View File

@ -1 +0,0 @@
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.)

View File

@ -1 +0,0 @@
Renamed the utility function ``_pytest.compat._escape_strings`` to ``_ascii_escaped`` to better communicate the function's purpose.

View File

@ -1 +0,0 @@
Clarify ``pytest_configure`` hook call order.

View File

@ -1 +0,0 @@
Introduce ``mark.with_args`` in order to allow passing functions/classes as sole argument to marks.

View File

@ -1 +0,0 @@
New ``cache_dir`` ini option: sets a directory where stores content of cache plugin. Default directory is ``.cache`` which is created in ``rootdir``. Directory may be relative or absolute path. If setting relative path, then directory is created relative to ``rootdir``. Additionally path may contain environment variables, that will be expanded.

View File

@ -1 +0,0 @@
Improve error message for CollectError with skip/skipif.

View File

@ -1 +0,0 @@
Fix line number when reporting summary of skipped tests.

View File

@ -1 +0,0 @@
capture: ensure that EncodedFile.name is a string.

View File

@ -1 +0,0 @@
Emit warning about ``yield`` tests being deprecated only once per generator.

View File

@ -1 +0,0 @@
Ensure final collected line doesn't include artifacts of previous write.

View File

@ -1 +0,0 @@
The options ```--fixtures`` and ```--fixtures-per-test`` will now keep indentation within docstrings.

View File

@ -1 +0,0 @@
Fixed all flake8 errors and warnings.

View File

@ -1 +0,0 @@
Added ``fix-lint`` tox environment to run automatic pep8 fixes on the code.

View File

@ -1,2 +0,0 @@
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.

View File

@ -1 +0,0 @@
Turn warnings into errors in pytest's own test suite in order to catch regressions due to deprecations more promptly.

View File

@ -1,2 +0,0 @@
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.

View File

@ -1 +0,0 @@
doctests line numbers are now reported correctly, fixing `pytest-sugar#122 <https://github.com/Frozenball/pytest-sugar/issues/122>`_.

View File

@ -1 +0,0 @@
Show multiple issue links in CHANGELOG entries.

View File

@ -1,2 +0,0 @@
``--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.

View File

@ -1,2 +0,0 @@
New ``pytest_report_collectionfinish`` hook which allows plugins to add messages to the terminal reporting after
collection has been finished successfully.

View File

@ -1,4 +0,0 @@
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.

View File

@ -1 +0,0 @@
Exceptions raised by ``pytest.fail``, ``pytest.skip`` and ``pytest.xfail`` now subclass BaseException, making them harder to be caught unintentionally by normal code.

View File

@ -1 +0,0 @@
Fix non-determinism in order of fixture collection. Adds new dependency (ordereddict) for Python 2.6.

View File

@ -1 +0,0 @@
Extend documentation for testing plugin code with the ``pytester`` plugin.

View File

@ -6,6 +6,7 @@ Release announcements
:maxdepth: 2
release-3.2.0
release-3.1.3
release-3.1.2
release-3.1.1

View File

@ -0,0 +1,48 @@
pytest-3.2.0
=======================================
The pytest team is proud to announce the 3.2.0 release!
pytest is a mature Python testing tool with more than a 1600 tests
against itself, passing on many different interpreters and platforms.
This release contains a number of bugs fixes and improvements, so users are encouraged
to take a look at the CHANGELOG:
http://doc.pytest.org/en/latest/changelog.html
For complete documentation, please visit:
http://docs.pytest.org
As usual, you can upgrade from pypi via:
pip install -U pytest
Thanks to all who contributed to this release, among them:
* Alex Hartoto
* Andras Tim
* Bruno Oliveira
* Daniel Hahler
* Florian Bruhin
* Floris Bruynooghe
* John Still
* Jordan Moldow
* Kale Kundert
* Lawrence Mitchell
* Llandy Riveron Del Risco
* Maik Figura
* Martin Altmayer
* Mihai Capotă
* Nathaniel Waisbrot
* Nguyễn Hồng Quân
* Pauli Virtanen
* Raphael Pierzina
* Ronny Pfannschmidt
* Segev Finer
* V.Kuznetsov
Happy testing,
The Pytest Development Team

View File

@ -108,14 +108,14 @@ You can ask for available builtin or project-custom
The returned ``monkeypatch`` fixture provides these
helper methods to modify objects, dictionaries or os.environ::
monkeypatch.setattr(obj, name, value, raising=True)
monkeypatch.delattr(obj, name, raising=True)
monkeypatch.setitem(mapping, name, value)
monkeypatch.delitem(obj, name, raising=True)
monkeypatch.setenv(name, value, prepend=False)
monkeypatch.delenv(name, value, raising=True)
monkeypatch.syspath_prepend(path)
monkeypatch.chdir(path)
monkeypatch.setattr(obj, name, value, raising=True)
monkeypatch.delattr(obj, name, raising=True)
monkeypatch.setitem(mapping, name, value)
monkeypatch.delitem(obj, name, raising=True)
monkeypatch.setenv(name, value, prepend=False)
monkeypatch.delenv(name, value, raising=True)
monkeypatch.syspath_prepend(path)
monkeypatch.chdir(path)
All modifications will be undone after the requesting
test function or fixture has finished. The ``raising``

View File

@ -77,9 +77,9 @@ If you then run it with ``--lf``::
$ pytest --lf
======= test session starts ========
platform linux -- Python 3.x.y, pytest-3.x.y, py-1.x.y, pluggy-0.x.y
run-last-failure: rerun last 2 failures
rootdir: $REGENDOC_TMPDIR, inifile:
collected 50 items
run-last-failure: rerun previous 2 failures
test_50.py FF
@ -119,9 +119,9 @@ of ``FF`` and dots)::
$ pytest --ff
======= test session starts ========
platform linux -- Python 3.x.y, pytest-3.x.y, py-1.x.y, pluggy-0.x.y
run-last-failure: rerun last 2 failures first
rootdir: $REGENDOC_TMPDIR, inifile:
collected 50 items
run-last-failure: rerun previous 2 failures first
test_50.py FF................................................

View File

@ -494,7 +494,7 @@ then you will see two tests skipped and two executed tests as expected::
test_plat.py s.s.
======= short test summary info ========
SKIP [2] $REGENDOC_TMPDIR/conftest.py:12: cannot run on platform linux
SKIP [2] $REGENDOC_TMPDIR/conftest.py:13: cannot run on platform linux
======= 2 passed, 2 skipped in 0.12 seconds ========

View File

@ -413,7 +413,7 @@ Running it results in some skips if we don't have all the python interpreters in
. $ pytest -rs -q multipython.py
sssssssssssssss.........sss.........sss.........
======= short test summary info ========
SKIP [21] $REGENDOC_TMPDIR/CWD/multipython.py:23: 'python2.6' not found
SKIP [21] $REGENDOC_TMPDIR/CWD/multipython.py:24: 'python2.6' not found
27 passed, 21 skipped in 0.12 seconds
Indirect parametrization of optional implementations/imports
@ -467,7 +467,7 @@ If you run this with reporting for skips enabled::
test_module.py .s
======= short test summary info ========
SKIP [1] $REGENDOC_TMPDIR/conftest.py:10: could not import 'opt2'
SKIP [1] $REGENDOC_TMPDIR/conftest.py:11: could not import 'opt2'
======= 1 passed, 1 skipped in 0.12 seconds ========

View File

@ -358,7 +358,7 @@ get on the terminal - we are working on that)::
> int(s)
E ValueError: invalid literal for int() with base 10: 'qwe'
<0-codegen $PYTHON_PREFIX/lib/python3.5/site-packages/_pytest/python.py:1219>:1: ValueError
<0-codegen $PYTHON_PREFIX/lib/python3.5/site-packages/_pytest/python_api.py:570>:1: ValueError
_______ TestRaises.test_raises_doesnt ________
self = <failure_demo.TestRaises object at 0xdeadbeef>

View File

@ -170,7 +170,7 @@ and when running it will see a skipped "slow" test::
test_module.py .s
======= short test summary info ========
SKIP [1] test_module.py:13: need --runslow option to run
SKIP [1] test_module.py:14: need --runslow option to run
======= 1 passed, 1 skipped in 0.12 seconds ========

View File

@ -195,7 +195,7 @@ list::
$ pytest -q -rs test_strings.py
s
======= short test summary info ========
SKIP [1] test_strings.py:1: got empty parameter set ['stringinput'], function test_valid_string at $REGENDOC_TMPDIR/test_strings.py:1
SKIP [1] test_strings.py:2: got empty parameter set ['stringinput'], function test_valid_string at $REGENDOC_TMPDIR/test_strings.py:1
1 skipped in 0.12 seconds
For further examples, you might want to look at :ref:`more