Merge pull request #6259 from blueyed/merge-master-into-features
Merge master into features
This commit is contained in:
commit
2fa0518e89
|
@ -11,5 +11,13 @@ Here is a quick checklist that should be present in PRs.
|
||||||
Unless your change is trivial or a small documentation fix (e.g., a typo or reword of a small section) please:
|
Unless your change is trivial or a small documentation fix (e.g., a typo or reword of a small section) please:
|
||||||
|
|
||||||
- [ ] Create a new changelog file in the `changelog` folder, with a name like `<ISSUE NUMBER>.<TYPE>.rst`. See [changelog/README.rst](https://github.com/pytest-dev/pytest/blob/master/changelog/README.rst) for details.
|
- [ ] Create a new changelog file in the `changelog` folder, with a name like `<ISSUE NUMBER>.<TYPE>.rst`. See [changelog/README.rst](https://github.com/pytest-dev/pytest/blob/master/changelog/README.rst) for details.
|
||||||
|
|
||||||
|
Write sentences in the **past or present tense**, examples:
|
||||||
|
|
||||||
|
* *Improved verbose diff output with sequences.*
|
||||||
|
* *Terminal summary statistics now use multiple colors.*
|
||||||
|
|
||||||
|
Also make sure to end the sentence with a `.`.
|
||||||
|
|
||||||
- [ ] Add yourself to `AUTHORS` in alphabetical order.
|
- [ ] Add yourself to `AUTHORS` in alphabetical order.
|
||||||
-->
|
-->
|
||||||
|
|
|
@ -31,6 +31,7 @@ dist/
|
||||||
issue/
|
issue/
|
||||||
env/
|
env/
|
||||||
.env/
|
.env/
|
||||||
|
.venv/
|
||||||
3rdparty/
|
3rdparty/
|
||||||
.tox
|
.tox
|
||||||
.cache
|
.cache
|
||||||
|
|
|
@ -37,10 +37,6 @@ repos:
|
||||||
hooks:
|
hooks:
|
||||||
- id: pyupgrade
|
- id: pyupgrade
|
||||||
args: [--py3-plus]
|
args: [--py3-plus]
|
||||||
- repo: https://github.com/pre-commit/pygrep-hooks
|
|
||||||
rev: v1.4.0
|
|
||||||
hooks:
|
|
||||||
- id: rst-backticks
|
|
||||||
- repo: https://github.com/pre-commit/mirrors-mypy
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||||
rev: v0.740
|
rev: v0.740
|
||||||
hooks:
|
hooks:
|
||||||
|
|
1
AUTHORS
1
AUTHORS
|
@ -165,6 +165,7 @@ Marcelo Duarte Trevisani
|
||||||
Marcin Bachry
|
Marcin Bachry
|
||||||
Marco Gorelli
|
Marco Gorelli
|
||||||
Mark Abramowitz
|
Mark Abramowitz
|
||||||
|
Mark Dickinson
|
||||||
Markus Unterwaditzer
|
Markus Unterwaditzer
|
||||||
Martijn Faassen
|
Martijn Faassen
|
||||||
Martin Altmayer
|
Martin Altmayer
|
||||||
|
|
|
@ -113,7 +113,7 @@ Improvements
|
||||||
|
|
||||||
Before:
|
Before:
|
||||||
|
|
||||||
.. code-block::
|
::
|
||||||
|
|
||||||
E AssertionError: assert ['version', '...version_info'] == ['version', '...version', ...]
|
E AssertionError: assert ['version', '...version_info'] == ['version', '...version', ...]
|
||||||
E Right contains 3 more items, first extra item: ' '
|
E Right contains 3 more items, first extra item: ' '
|
||||||
|
@ -129,7 +129,7 @@ Improvements
|
||||||
|
|
||||||
After:
|
After:
|
||||||
|
|
||||||
.. code-block::
|
::
|
||||||
|
|
||||||
E AssertionError: assert ['version', '...version_info'] == ['version', '...version', ...]
|
E AssertionError: assert ['version', '...version_info'] == ['version', '...version', ...]
|
||||||
E Right contains 3 more items, first extra item: ' '
|
E Right contains 3 more items, first extra item: ' '
|
||||||
|
@ -145,6 +145,8 @@ Improvements
|
||||||
E ]
|
E ]
|
||||||
|
|
||||||
|
|
||||||
|
- `#5934 <https://github.com/pytest-dev/pytest/issues/5934>`_: ``repr`` of ``ExceptionInfo`` objects has been improved to honor the ``__repr__`` method of the underlying exception.
|
||||||
|
|
||||||
- `#5936 <https://github.com/pytest-dev/pytest/issues/5936>`_: Display untruncated assertion message with ``-vv``.
|
- `#5936 <https://github.com/pytest-dev/pytest/issues/5936>`_: Display untruncated assertion message with ``-vv``.
|
||||||
|
|
||||||
|
|
||||||
|
@ -155,7 +157,7 @@ Improvements
|
||||||
immutable and avoid accidental modifications.
|
immutable and avoid accidental modifications.
|
||||||
|
|
||||||
|
|
||||||
- `#6023 <https://github.com/pytest-dev/pytest/issues/6023>`_: ``pytest.main`` now returns a ``pytest.ExitCode`` instance now, except for when custom exit codes are used (where it returns ``int`` then still).
|
- `#6023 <https://github.com/pytest-dev/pytest/issues/6023>`_: ``pytest.main`` returns a ``pytest.ExitCode`` instance now, except for when custom exit codes are used (where it returns ``int`` then still).
|
||||||
|
|
||||||
|
|
||||||
- `#6026 <https://github.com/pytest-dev/pytest/issues/6026>`_: Align prefixes in output of pytester's ``LineMatcher``.
|
- `#6026 <https://github.com/pytest-dev/pytest/issues/6026>`_: Align prefixes in output of pytester's ``LineMatcher``.
|
||||||
|
@ -167,7 +169,7 @@ Improvements
|
||||||
- `#6069 <https://github.com/pytest-dev/pytest/issues/6069>`_: ``pytester.spawn`` does not skip/xfail tests on FreeBSD anymore unconditionally.
|
- `#6069 <https://github.com/pytest-dev/pytest/issues/6069>`_: ``pytester.spawn`` does not skip/xfail tests on FreeBSD anymore unconditionally.
|
||||||
|
|
||||||
|
|
||||||
- `#6097 <https://github.com/pytest-dev/pytest/issues/6097>`_: The "[XXX%]" indicator in the test summary is now colored according to the final (new) multi-colored line's main color.
|
- `#6097 <https://github.com/pytest-dev/pytest/issues/6097>`_: The "[...%]" indicator in the test summary is now colored according to the final (new) multi-colored line's main color.
|
||||||
|
|
||||||
|
|
||||||
- `#6116 <https://github.com/pytest-dev/pytest/issues/6116>`_: Added ``--co`` as a synonym to ``--collect-only``.
|
- `#6116 <https://github.com/pytest-dev/pytest/issues/6116>`_: Added ``--co`` as a synonym to ``--collect-only``.
|
||||||
|
@ -3693,7 +3695,7 @@ Deprecations and Removals
|
||||||
|
|
||||||
- ``pytest.approx`` no longer supports ``>``, ``>=``, ``<`` and ``<=``
|
- ``pytest.approx`` no longer supports ``>``, ``>=``, ``<`` and ``<=``
|
||||||
operators to avoid surprising/inconsistent behavior. See `the approx docs
|
operators to avoid surprising/inconsistent behavior. See `the approx docs
|
||||||
<https://docs.pytest.org/en/latest/builtin.html#pytest.approx>`_ for more
|
<https://docs.pytest.org/en/latest/reference.html#pytest-approx>`_ for more
|
||||||
information. (`#2003 <https://github.com/pytest-dev/pytest/issues/2003>`_)
|
information. (`#2003 <https://github.com/pytest-dev/pytest/issues/2003>`_)
|
||||||
|
|
||||||
- All old-style specific behavior in current classes in the pytest's API is
|
- All old-style specific behavior in current classes in the pytest's API is
|
||||||
|
@ -5050,7 +5052,7 @@ time or change existing behaviors in order to make them less surprising/more use
|
||||||
* Fix (`#1422`_): junit record_xml_property doesn't allow multiple records
|
* Fix (`#1422`_): junit record_xml_property doesn't allow multiple records
|
||||||
with same name.
|
with same name.
|
||||||
|
|
||||||
.. _`traceback style docs`: https://pytest.org/latest/usage.html#modifying-python-traceback-printing
|
.. _`traceback style docs`: https://pytest.org/en/latest/usage.html#modifying-python-traceback-printing
|
||||||
|
|
||||||
.. _#1609: https://github.com/pytest-dev/pytest/issues/1609
|
.. _#1609: https://github.com/pytest-dev/pytest/issues/1609
|
||||||
.. _#1422: https://github.com/pytest-dev/pytest/issues/1422
|
.. _#1422: https://github.com/pytest-dev/pytest/issues/1422
|
||||||
|
@ -5568,7 +5570,7 @@ time or change existing behaviors in order to make them less surprising/more use
|
||||||
- add ability to set command line options by environment variable PYTEST_ADDOPTS.
|
- add ability to set command line options by environment variable PYTEST_ADDOPTS.
|
||||||
|
|
||||||
- added documentation on the new pytest-dev teams on bitbucket and
|
- added documentation on the new pytest-dev teams on bitbucket and
|
||||||
github. See https://pytest.org/latest/contributing.html .
|
github. See https://pytest.org/en/latest/contributing.html .
|
||||||
Thanks to Anatoly for pushing and initial work on this.
|
Thanks to Anatoly for pushing and initial work on this.
|
||||||
|
|
||||||
- fix issue650: new option ``--docttest-ignore-import-errors`` which
|
- fix issue650: new option ``--docttest-ignore-import-errors`` which
|
||||||
|
@ -6309,7 +6311,7 @@ Bug fixes:
|
||||||
- yielded test functions will now have autouse-fixtures active but
|
- yielded test functions will now have autouse-fixtures active but
|
||||||
cannot accept fixtures as funcargs - it's anyway recommended to
|
cannot accept fixtures as funcargs - it's anyway recommended to
|
||||||
rather use the post-2.0 parametrize features instead of yield, see:
|
rather use the post-2.0 parametrize features instead of yield, see:
|
||||||
http://pytest.org/latest/example/parametrize.html
|
http://pytest.org/en/latest/example/parametrize.html
|
||||||
- fix autouse-issue where autouse-fixtures would not be discovered
|
- 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
|
if defined in an a/conftest.py file and tests in a/tests/test_some.py
|
||||||
- fix issue226 - LIFO ordering for fixture teardowns
|
- fix issue226 - LIFO ordering for fixture teardowns
|
||||||
|
@ -6442,7 +6444,7 @@ Bug fixes:
|
||||||
- pluginmanager.register(...) now raises ValueError if the
|
- pluginmanager.register(...) now raises ValueError if the
|
||||||
plugin has been already registered or the name is taken
|
plugin has been already registered or the name is taken
|
||||||
|
|
||||||
- fix issue159: improve http://pytest.org/latest/faq.html
|
- fix issue159: improve http://pytest.org/en/latest/faq.html
|
||||||
especially with respect to the "magic" history, also mention
|
especially with respect to the "magic" history, also mention
|
||||||
pytest-django, trial and unittest integration.
|
pytest-django, trial and unittest integration.
|
||||||
|
|
||||||
|
@ -6555,7 +6557,7 @@ Bug fixes:
|
||||||
or through plugin hooks. Also introduce a "--strict" option which
|
or through plugin hooks. Also introduce a "--strict" option which
|
||||||
will treat unregistered markers as errors
|
will treat unregistered markers as errors
|
||||||
allowing to avoid typos and maintain a well described set of markers
|
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
|
for your test suite. See exaples at http://pytest.org/en/latest/mark.html
|
||||||
and its links.
|
and its links.
|
||||||
- issue50: introduce "-m marker" option to select tests based on markers
|
- issue50: introduce "-m marker" option to select tests based on markers
|
||||||
(this is a stricter and more predictable version of '-k' in that "-m"
|
(this is a stricter and more predictable version of '-k' in that "-m"
|
||||||
|
@ -6738,7 +6740,7 @@ Bug fixes:
|
||||||
- refinements to "collecting" output on non-ttys
|
- refinements to "collecting" output on non-ttys
|
||||||
- refine internal plugin registration and --traceconfig output
|
- refine internal plugin registration and --traceconfig output
|
||||||
- introduce a mechanism to prevent/unregister plugins from the
|
- introduce a mechanism to prevent/unregister plugins from the
|
||||||
command line, see http://pytest.org/plugins.html#cmdunregister
|
command line, see http://pytest.org/en/latest/plugins.html#cmdunregister
|
||||||
- activate resultlog plugin by default
|
- activate resultlog plugin by default
|
||||||
- fix regression wrt yielded tests which due to the
|
- fix regression wrt yielded tests which due to the
|
||||||
collection-before-running semantics were not
|
collection-before-running semantics were not
|
||||||
|
|
|
@ -262,6 +262,19 @@ Here is a simple overview, with pytest-specific bits:
|
||||||
|
|
||||||
When committing, ``pre-commit`` will re-format the files if necessary.
|
When committing, ``pre-commit`` will re-format the files if necessary.
|
||||||
|
|
||||||
|
#. If instead of using ``tox`` you prefer to run the tests directly, then we suggest to create a virtual environment and use
|
||||||
|
an editable install with the ``testing`` extra::
|
||||||
|
|
||||||
|
$ python3 -m venv .venv
|
||||||
|
$ source .venv/bin/activate # Linux
|
||||||
|
$ .venv/Scripts/activate.bat # Windows
|
||||||
|
$ pip install -e ".[testing]"
|
||||||
|
|
||||||
|
Afterwards, you can edit the files and run pytest normally::
|
||||||
|
|
||||||
|
$ pytest testing/test_config.py
|
||||||
|
|
||||||
|
|
||||||
#. Commit and push once your tests pass and you are happy with your change(s)::
|
#. Commit and push once your tests pass and you are happy with your change(s)::
|
||||||
|
|
||||||
$ git commit -a -m "<commit message>"
|
$ git commit -a -m "<commit message>"
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
pytester: fix ``no_fnmatch_line`` when used after positive matching.
|
|
@ -0,0 +1,3 @@
|
||||||
|
Clear the ``sys.last_traceback``, ``sys.last_type`` and ``sys.last_value``
|
||||||
|
attributes by deleting them instead of setting them to ``None``. This better
|
||||||
|
matches the behaviour of the Python standard library.
|
|
@ -1,12 +1,14 @@
|
||||||
This directory contains "newsfragments" which are short files that contain a small **ReST**-formatted
|
This directory contains "newsfragments" which are short files that contain a small **ReST**-formatted
|
||||||
text that will be added to the next ``CHANGELOG``.
|
text that will be added to the next ``CHANGELOG``.
|
||||||
|
|
||||||
The ``CHANGELOG`` will be read by users, so this description should be aimed to pytest users
|
The ``CHANGELOG`` will be read by **users**, so this description should be aimed to pytest users
|
||||||
instead of describing internal changes which are only relevant to the developers.
|
instead of describing internal changes which are only relevant to the developers.
|
||||||
|
|
||||||
Make sure to use full sentences with correct case and punctuation, for example::
|
Make sure to use full sentences in the **past or present tense** and use punctuation, examples::
|
||||||
|
|
||||||
Fix issue with non-ascii messages from the ``warnings`` module.
|
Improved verbose diff output with sequences.
|
||||||
|
|
||||||
|
Terminal summary statistics now use multiple colors.
|
||||||
|
|
||||||
Each file should be named like ``<ISSUE>.<TYPE>.rst``, where
|
Each file should be named like ``<ISSUE>.<TYPE>.rst``, where
|
||||||
``<ISSUE>`` is an issue number, and ``<TYPE>`` is one of:
|
``<ISSUE>`` is an issue number, and ``<TYPE>`` is one of:
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
``repr`` of ``ExceptionInfo`` objects has been improved to honor the ``__repr__`` method of the underlying exception.
|
|
|
@ -7,7 +7,7 @@ see below for summary and detailed lists. A lot of long-deprecated code
|
||||||
has been removed, resulting in a much smaller and cleaner
|
has been removed, resulting in a much smaller and cleaner
|
||||||
implementation. See the new docs with examples here:
|
implementation. See the new docs with examples here:
|
||||||
|
|
||||||
http://pytest.org/2.0.0/index.html
|
http://pytest.org/en/latest/index.html
|
||||||
|
|
||||||
A note on packaging: pytest used to part of the "py" distribution up
|
A note on packaging: pytest used to part of the "py" distribution up
|
||||||
until version py-1.3.4 but this has changed now: pytest-2.0.0 only
|
until version py-1.3.4 but this has changed now: pytest-2.0.0 only
|
||||||
|
@ -36,12 +36,12 @@ New Features
|
||||||
|
|
||||||
import pytest ; pytest.main(arglist, pluginlist)
|
import pytest ; pytest.main(arglist, pluginlist)
|
||||||
|
|
||||||
see http://pytest.org/2.0.0/usage.html for details.
|
see http://pytest.org/en/latest/usage.html for details.
|
||||||
|
|
||||||
- new and better reporting information in assert expressions
|
- new and better reporting information in assert expressions
|
||||||
if comparing lists, sequences or strings.
|
if comparing lists, sequences or strings.
|
||||||
|
|
||||||
see http://pytest.org/2.0.0/assert.html#newreport
|
see http://pytest.org/en/latest/assert.html#newreport
|
||||||
|
|
||||||
- new configuration through ini-files (setup.cfg or tox.ini recognized),
|
- new configuration through ini-files (setup.cfg or tox.ini recognized),
|
||||||
for example::
|
for example::
|
||||||
|
@ -50,7 +50,7 @@ New Features
|
||||||
norecursedirs = .hg data* # don't ever recurse in such dirs
|
norecursedirs = .hg data* # don't ever recurse in such dirs
|
||||||
addopts = -x --pyargs # add these command line options by default
|
addopts = -x --pyargs # add these command line options by default
|
||||||
|
|
||||||
see http://pytest.org/2.0.0/customize.html
|
see http://pytest.org/en/latest/customize.html
|
||||||
|
|
||||||
- improved standard unittest support. In general py.test should now
|
- improved standard unittest support. In general py.test should now
|
||||||
better be able to run custom unittest.TestCases like twisted trial
|
better be able to run custom unittest.TestCases like twisted trial
|
||||||
|
|
|
@ -57,7 +57,7 @@ Changes between 2.0.0 and 2.0.1
|
||||||
- refinements to "collecting" output on non-ttys
|
- refinements to "collecting" output on non-ttys
|
||||||
- refine internal plugin registration and --traceconfig output
|
- refine internal plugin registration and --traceconfig output
|
||||||
- introduce a mechanism to prevent/unregister plugins from the
|
- introduce a mechanism to prevent/unregister plugins from the
|
||||||
command line, see http://pytest.org/latest/plugins.html#cmdunregister
|
command line, see http://pytest.org/en/latest/plugins.html#cmdunregister
|
||||||
- activate resultlog plugin by default
|
- activate resultlog plugin by default
|
||||||
- fix regression wrt yielded tests which due to the
|
- fix regression wrt yielded tests which due to the
|
||||||
collection-before-running semantics were not
|
collection-before-running semantics were not
|
||||||
|
|
|
@ -9,7 +9,7 @@ with these improvements:
|
||||||
|
|
||||||
- new @pytest.mark.parametrize decorator to run tests with different arguments
|
- new @pytest.mark.parametrize decorator to run tests with different arguments
|
||||||
- new metafunc.parametrize() API for parametrizing arguments independently
|
- new metafunc.parametrize() API for parametrizing arguments independently
|
||||||
- see examples at http://pytest.org/latest/example/parametrize.html
|
- see examples at http://pytest.org/en/latest/example/parametrize.html
|
||||||
- NOTE that parametrize() related APIs are still a bit experimental
|
- NOTE that parametrize() related APIs are still a bit experimental
|
||||||
and might change in future releases.
|
and might change in future releases.
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ with these improvements:
|
||||||
- "-m markexpr" option for selecting tests according to their mark
|
- "-m markexpr" option for selecting tests according to their mark
|
||||||
- a new "markers" ini-variable for registering test markers for your project
|
- a new "markers" ini-variable for registering test markers for your project
|
||||||
- the new "--strict" bails out with an error if using unregistered markers.
|
- the new "--strict" bails out with an error if using unregistered markers.
|
||||||
- see examples at http://pytest.org/latest/example/markers.html
|
- see examples at http://pytest.org/en/latest/example/markers.html
|
||||||
|
|
||||||
* duration profiling: new "--duration=N" option showing the N slowest test
|
* duration profiling: new "--duration=N" option showing the N slowest test
|
||||||
execution or setup/teardown calls. This is most useful if you want to
|
execution or setup/teardown calls. This is most useful if you want to
|
||||||
|
@ -78,7 +78,7 @@ Changes between 2.1.3 and 2.2.0
|
||||||
or through plugin hooks. Also introduce a "--strict" option which
|
or through plugin hooks. Also introduce a "--strict" option which
|
||||||
will treat unregistered markers as errors
|
will treat unregistered markers as errors
|
||||||
allowing to avoid typos and maintain a well described set of markers
|
allowing to avoid typos and maintain a well described set of markers
|
||||||
for your test suite. See examples at http://pytest.org/latest/mark.html
|
for your test suite. See examples at http://pytest.org/en/latest/mark.html
|
||||||
and its links.
|
and its links.
|
||||||
- issue50: introduce "-m marker" option to select tests based on markers
|
- issue50: introduce "-m marker" option to select tests based on markers
|
||||||
(this is a stricter and more predictable version of "-k" in that "-m"
|
(this is a stricter and more predictable version of "-k" in that "-m"
|
||||||
|
|
|
@ -13,12 +13,12 @@ re-useable fixture design.
|
||||||
|
|
||||||
For detailed info and tutorial-style examples, see:
|
For detailed info and tutorial-style examples, see:
|
||||||
|
|
||||||
http://pytest.org/latest/fixture.html
|
http://pytest.org/en/latest/fixture.html
|
||||||
|
|
||||||
Moreover, there is now support for using pytest fixtures/funcargs with
|
Moreover, there is now support for using pytest fixtures/funcargs with
|
||||||
unittest-style suites, see here for examples:
|
unittest-style suites, see here for examples:
|
||||||
|
|
||||||
http://pytest.org/latest/unittest.html
|
http://pytest.org/en/latest/unittest.html
|
||||||
|
|
||||||
Besides, more unittest-test suites are now expected to "simply work"
|
Besides, more unittest-test suites are now expected to "simply work"
|
||||||
with pytest.
|
with pytest.
|
||||||
|
@ -29,11 +29,11 @@ pytest-2.2.4.
|
||||||
|
|
||||||
If you are interested in the precise reasoning (including examples) of the
|
If you are interested in the precise reasoning (including examples) of the
|
||||||
pytest-2.3 fixture evolution, please consult
|
pytest-2.3 fixture evolution, please consult
|
||||||
http://pytest.org/latest/funcarg_compare.html
|
http://pytest.org/en/latest/funcarg_compare.html
|
||||||
|
|
||||||
For general info on installation and getting started:
|
For general info on installation and getting started:
|
||||||
|
|
||||||
http://pytest.org/latest/getting-started.html
|
http://pytest.org/en/latest/getting-started.html
|
||||||
|
|
||||||
Docs and PDF access as usual at:
|
Docs and PDF access as usual at:
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ Changes between 2.2.4 and 2.3.0
|
||||||
- pluginmanager.register(...) now raises ValueError if the
|
- pluginmanager.register(...) now raises ValueError if the
|
||||||
plugin has been already registered or the name is taken
|
plugin has been already registered or the name is taken
|
||||||
|
|
||||||
- fix issue159: improve http://pytest.org/latest/faq.html
|
- fix issue159: improve http://pytest.org/en/latest/faq.html
|
||||||
especially with respect to the "magic" history, also mention
|
especially with respect to the "magic" history, also mention
|
||||||
pytest-django, trial and unittest integration.
|
pytest-django, trial and unittest integration.
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ comes with the following fixes and features:
|
||||||
- yielded test functions will now have autouse-fixtures active but
|
- yielded test functions will now have autouse-fixtures active but
|
||||||
cannot accept fixtures as funcargs - it's anyway recommended to
|
cannot accept fixtures as funcargs - it's anyway recommended to
|
||||||
rather use the post-2.0 parametrize features instead of yield, see:
|
rather use the post-2.0 parametrize features instead of yield, see:
|
||||||
http://pytest.org/latest/example/parametrize.html
|
http://pytest.org/en/latest/example/parametrize.html
|
||||||
- fix autouse-issue where autouse-fixtures would not be discovered
|
- 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
|
if defined in an a/conftest.py file and tests in a/tests/test_some.py
|
||||||
- fix issue226 - LIFO ordering for fixture teardowns
|
- fix issue226 - LIFO ordering for fixture teardowns
|
||||||
|
|
|
@ -7,7 +7,7 @@ from a few supposedly very minor incompatibilities. See below for
|
||||||
a full list of details. A few feature highlights:
|
a full list of details. A few feature highlights:
|
||||||
|
|
||||||
- new yield-style fixtures `pytest.yield_fixture
|
- new yield-style fixtures `pytest.yield_fixture
|
||||||
<http://pytest.org/latest/yieldfixture.html>`_, allowing to use
|
<http://pytest.org/en/latest/yieldfixture.html>`_, allowing to use
|
||||||
existing with-style context managers in fixture functions.
|
existing with-style context managers in fixture functions.
|
||||||
|
|
||||||
- improved pdb support: ``import pdb ; pdb.set_trace()`` now works
|
- improved pdb support: ``import pdb ; pdb.set_trace()`` now works
|
||||||
|
|
|
@ -52,7 +52,7 @@ holger krekel
|
||||||
- add ability to set command line options by environment variable PYTEST_ADDOPTS.
|
- add ability to set command line options by environment variable PYTEST_ADDOPTS.
|
||||||
|
|
||||||
- added documentation on the new pytest-dev teams on bitbucket and
|
- added documentation on the new pytest-dev teams on bitbucket and
|
||||||
github. See https://pytest.org/latest/contributing.html .
|
github. See https://pytest.org/en/latest/contributing.html .
|
||||||
Thanks to Anatoly for pushing and initial work on this.
|
Thanks to Anatoly for pushing and initial work on this.
|
||||||
|
|
||||||
- fix issue650: new option ``--docttest-ignore-import-errors`` which
|
- fix issue650: new option ``--docttest-ignore-import-errors`` which
|
||||||
|
|
|
@ -131,7 +131,7 @@ The py.test Development Team
|
||||||
with same name.
|
with same name.
|
||||||
|
|
||||||
|
|
||||||
.. _`traceback style docs`: https://pytest.org/latest/usage.html#modifying-python-traceback-printing
|
.. _`traceback style docs`: https://pytest.org/en/latest/usage.html#modifying-python-traceback-printing
|
||||||
|
|
||||||
.. _#1422: https://github.com/pytest-dev/pytest/issues/1422
|
.. _#1422: https://github.com/pytest-dev/pytest/issues/1422
|
||||||
.. _#1379: https://github.com/pytest-dev/pytest/issues/1379
|
.. _#1379: https://github.com/pytest-dev/pytest/issues/1379
|
||||||
|
|
|
@ -92,7 +92,7 @@ exclude_patterns = [
|
||||||
|
|
||||||
|
|
||||||
# The reST default role (used for this markup: `text`) to use for all documents.
|
# The reST default role (used for this markup: `text`) to use for all documents.
|
||||||
# default_role = None
|
default_role = "literal"
|
||||||
|
|
||||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||||
# add_function_parentheses = True
|
# add_function_parentheses = True
|
||||||
|
@ -112,6 +112,19 @@ pygments_style = "sphinx"
|
||||||
# A list of ignored prefixes for module index sorting.
|
# A list of ignored prefixes for module index sorting.
|
||||||
# modindex_common_prefix = []
|
# modindex_common_prefix = []
|
||||||
|
|
||||||
|
# A list of regular expressions that match URIs that should not be checked when
|
||||||
|
# doing a linkcheck.
|
||||||
|
linkcheck_ignore = [
|
||||||
|
"https://github.com/numpy/numpy/blob/master/doc/release/1.16.0-notes.rst#new-deprecations",
|
||||||
|
"https://blogs.msdn.microsoft.com/bharry/2017/06/28/testing-in-a-cloud-delivery-cadence/",
|
||||||
|
"http://pythontesting.net/framework/pytest-introduction/",
|
||||||
|
r"https://github.com/pytest-dev/pytest/issues/\d+",
|
||||||
|
r"https://github.com/pytest-dev/pytest/pull/\d+",
|
||||||
|
]
|
||||||
|
|
||||||
|
# The number of worker threads to use when checking links (default=5).
|
||||||
|
linkcheck_workers = 5
|
||||||
|
|
||||||
|
|
||||||
# -- Options for HTML output ---------------------------------------------------
|
# -- Options for HTML output ---------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,9 @@ pytest fixtures: explicit, modular, scalable
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. _`xUnit`: http://en.wikipedia.org/wiki/XUnit
|
.. _`xUnit`: https://en.wikipedia.org/wiki/XUnit
|
||||||
.. _`purpose of test fixtures`: http://en.wikipedia.org/wiki/Test_fixture#Software
|
.. _`purpose of test fixtures`: https://en.wikipedia.org/wiki/Test_fixture#Software
|
||||||
.. _`Dependency injection`: http://en.wikipedia.org/wiki/Dependency_injection
|
.. _`Dependency injection`: https://en.wikipedia.org/wiki/Dependency_injection
|
||||||
|
|
||||||
The `purpose of test fixtures`_ is to provide a fixed baseline
|
The `purpose of test fixtures`_ is to provide a fixed baseline
|
||||||
upon which tests can reliably and repeatedly execute. pytest fixtures
|
upon which tests can reliably and repeatedly execute. pytest fixtures
|
||||||
|
|
|
@ -73,7 +73,6 @@ Some organisations using pytest
|
||||||
|
|
||||||
* `Square Kilometre Array, Cape Town <http://ska.ac.za/>`_
|
* `Square Kilometre Array, Cape Town <http://ska.ac.za/>`_
|
||||||
* `Some Mozilla QA people <http://www.theautomatedtester.co.uk/blog/2011/pytest_and_xdist_plugin.html>`_ use pytest to distribute their Selenium tests
|
* `Some Mozilla QA people <http://www.theautomatedtester.co.uk/blog/2011/pytest_and_xdist_plugin.html>`_ use pytest to distribute their Selenium tests
|
||||||
* `Tandberg <http://www.tandberg.com/>`_
|
|
||||||
* `Shootq <http://web.shootq.com/>`_
|
* `Shootq <http://web.shootq.com/>`_
|
||||||
* `Stups department of Heinrich Heine University Duesseldorf <http://www.stups.uni-duesseldorf.de/projects.php>`_
|
* `Stups department of Heinrich Heine University Duesseldorf <http://www.stups.uni-duesseldorf.de/projects.php>`_
|
||||||
* cellzome
|
* cellzome
|
||||||
|
|
|
@ -64,7 +64,7 @@ Talks and blog postings
|
||||||
- `pytest introduction from Brian Okken (January 2013)
|
- `pytest introduction from Brian Okken (January 2013)
|
||||||
<http://pythontesting.net/framework/pytest-introduction/>`_
|
<http://pythontesting.net/framework/pytest-introduction/>`_
|
||||||
|
|
||||||
- pycon australia 2012 pytest talk from Brianna Laugher (`video <http://www.youtube.com/watch?v=DTNejE9EraI>`_, `slides <http://www.slideshare.net/pfctdayelise/funcargs-other-fun-with-pytest>`_, `code <https://gist.github.com/3386951>`_)
|
- pycon australia 2012 pytest talk from Brianna Laugher (`video <http://www.youtube.com/watch?v=DTNejE9EraI>`_, `slides <https://www.slideshare.net/pfctdayelise/funcargs-other-fun-with-pytest>`_, `code <https://gist.github.com/3386951>`_)
|
||||||
- `pycon 2012 US talk video from Holger Krekel <http://www.youtube.com/watch?v=9LVqBQcFmyw>`_
|
- `pycon 2012 US talk video from Holger Krekel <http://www.youtube.com/watch?v=9LVqBQcFmyw>`_
|
||||||
|
|
||||||
- `monkey patching done right`_ (blog post, consult `monkeypatch plugin`_ for up-to-date API)
|
- `monkey patching done right`_ (blog post, consult `monkeypatch plugin`_ for up-to-date API)
|
||||||
|
|
|
@ -79,12 +79,19 @@ def fix_formatting():
|
||||||
call(["pre-commit", "run", "--all-files"])
|
call(["pre-commit", "run", "--all-files"])
|
||||||
|
|
||||||
|
|
||||||
|
def check_links():
|
||||||
|
"""Runs sphinx-build to check links"""
|
||||||
|
print(f"{Fore.CYAN}[generate.check_links] {Fore.RESET}Checking links")
|
||||||
|
check_call(["tox", "-e", "docs-checklinks"])
|
||||||
|
|
||||||
|
|
||||||
def pre_release(version):
|
def pre_release(version):
|
||||||
"""Generates new docs, release announcements and creates a local tag."""
|
"""Generates new docs, release announcements and creates a local tag."""
|
||||||
announce(version)
|
announce(version)
|
||||||
regen()
|
regen()
|
||||||
changelog(version, write_out=True)
|
changelog(version, write_out=True)
|
||||||
fix_formatting()
|
fix_formatting()
|
||||||
|
check_links()
|
||||||
|
|
||||||
msg = "Preparing release version {}".format(version)
|
msg = "Preparing release version {}".format(version)
|
||||||
check_call(["git", "commit", "-a", "-m", msg])
|
check_call(["git", "commit", "-a", "-m", msg])
|
||||||
|
|
|
@ -1438,8 +1438,10 @@ class LineMatcher:
|
||||||
self._log("{:>{width}}".format("and:", width=wnick), repr(nextline))
|
self._log("{:>{width}}".format("and:", width=wnick), repr(nextline))
|
||||||
extralines.append(nextline)
|
extralines.append(nextline)
|
||||||
else:
|
else:
|
||||||
self._log("remains unmatched: {!r}".format(line))
|
msg = "remains unmatched: {!r}".format(line)
|
||||||
pytest.fail(self._log_text.lstrip())
|
self._log(msg)
|
||||||
|
self._fail(msg)
|
||||||
|
self._log_output = []
|
||||||
|
|
||||||
def no_fnmatch_line(self, pat):
|
def no_fnmatch_line(self, pat):
|
||||||
"""Ensure captured lines do not match the given pattern, using ``fnmatch.fnmatch``.
|
"""Ensure captured lines do not match the given pattern, using ``fnmatch.fnmatch``.
|
||||||
|
@ -1465,18 +1467,21 @@ class LineMatcher:
|
||||||
__tracebackhide__ = True
|
__tracebackhide__ = True
|
||||||
nomatch_printed = False
|
nomatch_printed = False
|
||||||
wnick = len(match_nickname) + 1
|
wnick = len(match_nickname) + 1
|
||||||
try:
|
for line in self.lines:
|
||||||
for line in self.lines:
|
if match_func(line, pat):
|
||||||
if match_func(line, pat):
|
msg = "{}: {!r}".format(match_nickname, pat)
|
||||||
self._log("%s:" % match_nickname, repr(pat))
|
self._log(msg)
|
||||||
self._log("{:>{width}}".format("with:", width=wnick), repr(line))
|
self._log("{:>{width}}".format("with:", width=wnick), repr(line))
|
||||||
pytest.fail(self._log_text.lstrip())
|
self._fail(msg)
|
||||||
else:
|
else:
|
||||||
if not nomatch_printed:
|
if not nomatch_printed:
|
||||||
self._log(
|
self._log("{:>{width}}".format("nomatch:", width=wnick), repr(pat))
|
||||||
"{:>{width}}".format("nomatch:", width=wnick), repr(pat)
|
nomatch_printed = True
|
||||||
)
|
self._log("{:>{width}}".format("and:", width=wnick), repr(line))
|
||||||
nomatch_printed = True
|
self._log_output = []
|
||||||
self._log("{:>{width}}".format("and:", width=wnick), repr(line))
|
|
||||||
finally:
|
def _fail(self, msg):
|
||||||
self._log_output = []
|
__tracebackhide__ = True
|
||||||
|
log_text = self._log_text
|
||||||
|
self._log_output = []
|
||||||
|
pytest.fail(log_text)
|
||||||
|
|
|
@ -121,7 +121,12 @@ def pytest_runtest_setup(item):
|
||||||
|
|
||||||
def pytest_runtest_call(item):
|
def pytest_runtest_call(item):
|
||||||
_update_current_test_var(item, "call")
|
_update_current_test_var(item, "call")
|
||||||
sys.last_type, sys.last_value, sys.last_traceback = (None, None, None)
|
try:
|
||||||
|
del sys.last_type
|
||||||
|
del sys.last_value
|
||||||
|
del sys.last_traceback
|
||||||
|
except AttributeError:
|
||||||
|
pass
|
||||||
try:
|
try:
|
||||||
item.runtest()
|
item.runtest()
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|
|
@ -530,7 +530,7 @@ def test_no_matching(function):
|
||||||
]
|
]
|
||||||
else:
|
else:
|
||||||
assert obtained == [
|
assert obtained == [
|
||||||
"nomatch: '{}'".format(good_pattern),
|
" nomatch: '{}'".format(good_pattern),
|
||||||
" and: 'cachedir: .pytest_cache'",
|
" and: 'cachedir: .pytest_cache'",
|
||||||
" and: 'collecting ... collected 1 item'",
|
" and: 'collecting ... collected 1 item'",
|
||||||
" and: ''",
|
" and: ''",
|
||||||
|
@ -542,6 +542,14 @@ def test_no_matching(function):
|
||||||
func(bad_pattern) # bad pattern does not match any line: passes
|
func(bad_pattern) # bad pattern does not match any line: passes
|
||||||
|
|
||||||
|
|
||||||
|
def test_no_matching_after_match():
|
||||||
|
lm = LineMatcher(["1", "2", "3"])
|
||||||
|
lm.fnmatch_lines(["1", "3"])
|
||||||
|
with pytest.raises(pytest.fail.Exception) as e:
|
||||||
|
lm.no_fnmatch_line("*")
|
||||||
|
assert str(e.value).splitlines() == ["fnmatch: '*'", " with: '1'"]
|
||||||
|
|
||||||
|
|
||||||
def test_pytester_addopts(request, monkeypatch):
|
def test_pytester_addopts(request, monkeypatch):
|
||||||
monkeypatch.setenv("PYTEST_ADDOPTS", "--orig-unused")
|
monkeypatch.setenv("PYTEST_ADDOPTS", "--orig-unused")
|
||||||
|
|
||||||
|
|
|
@ -900,9 +900,9 @@ def test_store_except_info_on_error():
|
||||||
# The next run should clear the exception info stored by the previous run
|
# The next run should clear the exception info stored by the previous run
|
||||||
ItemMightRaise.raise_error = False
|
ItemMightRaise.raise_error = False
|
||||||
runner.pytest_runtest_call(ItemMightRaise())
|
runner.pytest_runtest_call(ItemMightRaise())
|
||||||
assert sys.last_type is None
|
assert not hasattr(sys, "last_type")
|
||||||
assert sys.last_value is None
|
assert not hasattr(sys, "last_value")
|
||||||
assert sys.last_traceback is None
|
assert not hasattr(sys, "last_traceback")
|
||||||
|
|
||||||
|
|
||||||
def test_current_test_env_var(testdir, monkeypatch):
|
def test_current_test_env_var(testdir, monkeypatch):
|
||||||
|
|
9
tox.ini
9
tox.ini
|
@ -15,6 +15,7 @@ envlist =
|
||||||
doctesting
|
doctesting
|
||||||
py37-freeze
|
py37-freeze
|
||||||
docs
|
docs
|
||||||
|
docs-checklinks
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
commands =
|
commands =
|
||||||
|
@ -63,6 +64,14 @@ deps = -r{toxinidir}/doc/en/requirements.txt
|
||||||
commands =
|
commands =
|
||||||
sphinx-build -W -b html . _build
|
sphinx-build -W -b html . _build
|
||||||
|
|
||||||
|
[testenv:docs-checklinks]
|
||||||
|
basepython = python3
|
||||||
|
usedevelop = True
|
||||||
|
changedir = doc/en
|
||||||
|
deps = -r{toxinidir}/doc/en/requirements.txt
|
||||||
|
commands =
|
||||||
|
sphinx-build -W -q --keep-going -b linkcheck . _build
|
||||||
|
|
||||||
[testenv:doctesting]
|
[testenv:doctesting]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
skipsdist = True
|
skipsdist = True
|
||||||
|
|
Loading…
Reference in New Issue