Merge pull request #5132 from nicoddemus/merge-master-into-features
Merge master into features
This commit is contained in:
		
						commit
						990133f804
					
				| 
						 | 
				
			
			@ -18,6 +18,24 @@ with advance notice in the **Deprecations** section of releases.
 | 
			
		|||
 | 
			
		||||
.. towncrier release notes start
 | 
			
		||||
 | 
			
		||||
pytest 4.4.1 (2019-04-15)
 | 
			
		||||
=========================
 | 
			
		||||
 | 
			
		||||
Bug Fixes
 | 
			
		||||
---------
 | 
			
		||||
 | 
			
		||||
- `#5031 <https://github.com/pytest-dev/pytest/issues/5031>`_: Environment variables are properly restored when using pytester's ``testdir`` fixture.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- `#5039 <https://github.com/pytest-dev/pytest/issues/5039>`_: Fix regression with ``--pdbcls``, which stopped working with local modules in 4.0.0.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- `#5092 <https://github.com/pytest-dev/pytest/issues/5092>`_: Produce a warning when unknown keywords are passed to ``pytest.param(...)``.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- `#5098 <https://github.com/pytest-dev/pytest/issues/5098>`_: Invalidate import caches with ``monkeypatch.syspath_prepend``, which is required with namespace packages being used.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
pytest 4.4.0 (2019-03-29)
 | 
			
		||||
=========================
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
Environment variables are properly restored when using pytester's ``testdir`` fixture.
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
Fix regression with ``--pdbcls``, which stopped working with local modules in 4.0.0.
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
Produce a warning when unknown keywords are passed to ``pytest.param(...)``.
 | 
			
		||||
| 
						 | 
				
			
			@ -1 +0,0 @@
 | 
			
		|||
Invalidate import caches with ``monkeypatch.syspath_prepend``, which is required with namespace packages being used.
 | 
			
		||||
| 
						 | 
				
			
			@ -6,6 +6,7 @@ Release announcements
 | 
			
		|||
   :maxdepth: 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   release-4.4.1
 | 
			
		||||
   release-4.4.0
 | 
			
		||||
   release-4.3.1
 | 
			
		||||
   release-4.3.0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
pytest-4.4.1
 | 
			
		||||
=======================================
 | 
			
		||||
 | 
			
		||||
pytest 4.4.1 has just been released to PyPI.
 | 
			
		||||
 | 
			
		||||
This is a bug-fix release, being a drop-in replacement. To upgrade::
 | 
			
		||||
 | 
			
		||||
  pip install --upgrade pytest
 | 
			
		||||
 | 
			
		||||
The full changelog is available at https://docs.pytest.org/en/latest/changelog.html.
 | 
			
		||||
 | 
			
		||||
Thanks to all who contributed to this release, among them:
 | 
			
		||||
 | 
			
		||||
* Anthony Sottile
 | 
			
		||||
* Bruno Oliveira
 | 
			
		||||
* Daniel Hahler
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Happy testing,
 | 
			
		||||
The pytest Development Team
 | 
			
		||||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ you will see the return value of the function call:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_assert1.py F                                                    [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -46,7 +46,7 @@ you will see the return value of the function call:
 | 
			
		|||
    E       assert 3 == 4
 | 
			
		||||
    E        +  where 3 = f()
 | 
			
		||||
 | 
			
		||||
    test_assert1.py:5: AssertionError
 | 
			
		||||
    test_assert1.py:6: AssertionError
 | 
			
		||||
    ========================= 1 failed in 0.12 seconds =========================
 | 
			
		||||
 | 
			
		||||
``pytest`` has support for showing the values of the most common subexpressions
 | 
			
		||||
| 
						 | 
				
			
			@ -188,7 +188,7 @@ if you run this module:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_assert2.py F                                                    [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -207,7 +207,7 @@ if you run this module:
 | 
			
		|||
    E         '5'
 | 
			
		||||
    E         Use -v to get the full diff
 | 
			
		||||
 | 
			
		||||
    test_assert2.py:5: AssertionError
 | 
			
		||||
    test_assert2.py:6: AssertionError
 | 
			
		||||
    ========================= 1 failed in 0.12 seconds =========================
 | 
			
		||||
 | 
			
		||||
Special comparisons are done for a number of cases:
 | 
			
		||||
| 
						 | 
				
			
			@ -275,7 +275,7 @@ the conftest file:
 | 
			
		|||
   E       assert Comparing Foo instances:
 | 
			
		||||
   E            vals: 1 != 2
 | 
			
		||||
 | 
			
		||||
   test_foocompare.py:11: AssertionError
 | 
			
		||||
   test_foocompare.py:12: AssertionError
 | 
			
		||||
   1 failed in 0.12 seconds
 | 
			
		||||
 | 
			
		||||
.. _assert-details:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -82,7 +82,7 @@ If you then run it with ``--lf``:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 50 items / 48 deselected / 2 selected
 | 
			
		||||
    run-last-failure: rerun previous 2 failures
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -126,7 +126,7 @@ of ``FF`` and dots):
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 50 items
 | 
			
		||||
    run-last-failure: rerun previous 2 failures first
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -258,7 +258,7 @@ You can always peek at the content of the cache using the
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    --------------------------- cache values for '*' ---------------------------
 | 
			
		||||
    cache/lastfailed contains:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,7 +71,7 @@ of the failing function and hide the other one:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_module.py .F                                                    [100%]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,7 +72,7 @@ then you can just invoke ``pytest`` without command line options:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project, inifile: pytest.ini
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
 | 
			
		||||
    collected 1 item
 | 
			
		||||
 | 
			
		||||
    mymodule.py .                                                        [100%]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,7 +45,7 @@ You can then restrict a test run to only run tests marked with ``webtest``:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 4 items / 3 deselected / 1 selected
 | 
			
		||||
 | 
			
		||||
    test_server.py::test_send_http PASSED                                [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -60,7 +60,7 @@ Or the inverse, running all tests except the webtest ones:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 4 items / 1 deselected / 3 selected
 | 
			
		||||
 | 
			
		||||
    test_server.py::test_something_quick PASSED                          [ 33%]
 | 
			
		||||
| 
						 | 
				
			
			@ -82,7 +82,7 @@ tests based on their module, class, method, or function name:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_server.py::TestClass::test_method PASSED                        [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -97,7 +97,7 @@ You can also select on the class:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_server.py::TestClass::test_method PASSED                        [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +112,7 @@ Or select multiple nodes:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_server.py::TestClass::test_method PASSED                        [ 50%]
 | 
			
		||||
| 
						 | 
				
			
			@ -152,7 +152,7 @@ select tests based on their names:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 4 items / 3 deselected / 1 selected
 | 
			
		||||
 | 
			
		||||
    test_server.py::test_send_http PASSED                                [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -167,7 +167,7 @@ And you can also run all tests except the ones that match the keyword:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 4 items / 1 deselected / 3 selected
 | 
			
		||||
 | 
			
		||||
    test_server.py::test_something_quick PASSED                          [ 33%]
 | 
			
		||||
| 
						 | 
				
			
			@ -184,7 +184,7 @@ Or to select "http" and "quick" tests:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 4 items / 2 deselected / 2 selected
 | 
			
		||||
 | 
			
		||||
    test_server.py::test_send_http PASSED                                [ 50%]
 | 
			
		||||
| 
						 | 
				
			
			@ -407,7 +407,7 @@ the test needs:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_someenv.py s                                                    [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -422,7 +422,7 @@ and here is one that specifies exactly the environment needed:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_someenv.py .                                                    [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -615,12 +615,12 @@ then you will see two tests skipped and two executed tests as expected:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 4 items
 | 
			
		||||
 | 
			
		||||
    test_plat.py s.s.                                                    [100%]
 | 
			
		||||
    ========================= short test summary info ==========================
 | 
			
		||||
    SKIPPED [2] /home/sweet/project/conftest.py:12: cannot run on platform linux
 | 
			
		||||
    SKIPPED [2] $REGENDOC_TMPDIR/conftest.py:13: cannot run on platform linux
 | 
			
		||||
 | 
			
		||||
    =================== 2 passed, 2 skipped in 0.12 seconds ====================
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -632,7 +632,7 @@ Note that if you specify a platform via the marker-command line option like this
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 4 items / 3 deselected / 1 selected
 | 
			
		||||
 | 
			
		||||
    test_plat.py .                                                       [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -696,18 +696,18 @@ We can now use the ``-m option`` to select one set:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 4 items / 2 deselected / 2 selected
 | 
			
		||||
 | 
			
		||||
    test_module.py FF                                                    [100%]
 | 
			
		||||
 | 
			
		||||
    ================================= FAILURES =================================
 | 
			
		||||
    __________________________ test_interface_simple ___________________________
 | 
			
		||||
    test_module.py:3: in test_interface_simple
 | 
			
		||||
    test_module.py:4: in test_interface_simple
 | 
			
		||||
        assert 0
 | 
			
		||||
    E   assert 0
 | 
			
		||||
    __________________________ test_interface_complex __________________________
 | 
			
		||||
    test_module.py:6: in test_interface_complex
 | 
			
		||||
    test_module.py:8: in test_interface_complex
 | 
			
		||||
        assert 0
 | 
			
		||||
    E   assert 0
 | 
			
		||||
    ================== 2 failed, 2 deselected in 0.12 seconds ==================
 | 
			
		||||
| 
						 | 
				
			
			@ -720,22 +720,22 @@ or to select both "event" and "interface" tests:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 4 items / 1 deselected / 3 selected
 | 
			
		||||
 | 
			
		||||
    test_module.py FFF                                                   [100%]
 | 
			
		||||
 | 
			
		||||
    ================================= FAILURES =================================
 | 
			
		||||
    __________________________ test_interface_simple ___________________________
 | 
			
		||||
    test_module.py:3: in test_interface_simple
 | 
			
		||||
    test_module.py:4: in test_interface_simple
 | 
			
		||||
        assert 0
 | 
			
		||||
    E   assert 0
 | 
			
		||||
    __________________________ test_interface_complex __________________________
 | 
			
		||||
    test_module.py:6: in test_interface_complex
 | 
			
		||||
    test_module.py:8: in test_interface_complex
 | 
			
		||||
        assert 0
 | 
			
		||||
    E   assert 0
 | 
			
		||||
    ____________________________ test_event_simple _____________________________
 | 
			
		||||
    test_module.py:9: in test_event_simple
 | 
			
		||||
    test_module.py:12: in test_event_simple
 | 
			
		||||
        assert 0
 | 
			
		||||
    E   assert 0
 | 
			
		||||
    ================== 3 failed, 1 deselected in 0.12 seconds ==================
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,7 @@ now execute the test specification:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project/nonpython
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR/nonpython
 | 
			
		||||
    collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_simple.yml F.                                                   [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -66,7 +66,7 @@ consulted when reporting in ``verbose`` mode:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project/nonpython
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR/nonpython
 | 
			
		||||
    collecting ... collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_simple.yml::hello FAILED                                        [ 50%]
 | 
			
		||||
| 
						 | 
				
			
			@ -90,9 +90,9 @@ interesting to just look at the collection tree:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project/nonpython
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR/nonpython
 | 
			
		||||
    collected 2 items
 | 
			
		||||
    <Package /home/sweet/project/nonpython>
 | 
			
		||||
    <Package $REGENDOC_TMPDIR/nonpython>
 | 
			
		||||
      <YamlFile test_simple.yml>
 | 
			
		||||
        <YamlItem hello>
 | 
			
		||||
        <YamlItem ok>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -146,7 +146,7 @@ objects, they are still using the default pytest representation:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 8 items
 | 
			
		||||
    <Module test_time.py>
 | 
			
		||||
      <Function test_timedistance_v0[a0-b0-expected0]>
 | 
			
		||||
| 
						 | 
				
			
			@ -205,7 +205,7 @@ this is a fully self-contained example which you can run with:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 4 items
 | 
			
		||||
 | 
			
		||||
    test_scenarios.py ....                                               [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -220,7 +220,7 @@ If you just collect tests you'll also nicely see 'advanced' and 'basic' as varia
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 4 items
 | 
			
		||||
    <Module test_scenarios.py>
 | 
			
		||||
      <Class TestSampleWithScenarios>
 | 
			
		||||
| 
						 | 
				
			
			@ -287,7 +287,7 @@ Let's first see how it looks like at collection time:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 2 items
 | 
			
		||||
    <Module test_backends.py>
 | 
			
		||||
      <Function test_db_initialized[d1]>
 | 
			
		||||
| 
						 | 
				
			
			@ -353,7 +353,7 @@ The result of this test will be successful:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 1 item
 | 
			
		||||
    <Module test_indirect_list.py>
 | 
			
		||||
      <Function test_indirect[a-b]>
 | 
			
		||||
| 
						 | 
				
			
			@ -434,9 +434,9 @@ Running it results in some skips if we don't have all the python interpreters in
 | 
			
		|||
.. code-block:: pytest
 | 
			
		||||
 | 
			
		||||
   . $ pytest -rs -q multipython.py
 | 
			
		||||
   ......sss......ssssssssssss                                          [100%]
 | 
			
		||||
   ...sss...sssssssss...sss...                                          [100%]
 | 
			
		||||
   ========================= short test summary info ==========================
 | 
			
		||||
   SKIPPED [15] /home/sweet/project/CWD/multipython.py:30: 'python3.5' not found
 | 
			
		||||
   SKIPPED [15] $REGENDOC_TMPDIR/CWD/multipython.py:30: 'python3.4' not found
 | 
			
		||||
   12 passed, 15 skipped in 0.12 seconds
 | 
			
		||||
 | 
			
		||||
Indirect parametrization of optional implementations/imports
 | 
			
		||||
| 
						 | 
				
			
			@ -488,12 +488,12 @@ If you run this with reporting for skips enabled:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_module.py .s                                                    [100%]
 | 
			
		||||
    ========================= short test summary info ==========================
 | 
			
		||||
    SKIPPED [1] /home/sweet/project/conftest.py:11: could not import 'opt2'
 | 
			
		||||
    SKIPPED [1] $REGENDOC_TMPDIR/conftest.py:11: could not import 'opt2'
 | 
			
		||||
 | 
			
		||||
    =================== 1 passed, 1 skipped in 0.12 seconds ====================
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -550,7 +550,7 @@ Then run ``pytest`` with verbose mode and with only the ``basic`` marker:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 17 items / 14 deselected / 3 selected
 | 
			
		||||
 | 
			
		||||
    test_pytest_param_example.py::test_eval[1+7-8] PASSED                [ 33%]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -148,7 +148,7 @@ The test collection would look like this:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project, inifile: pytest.ini
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
 | 
			
		||||
    collected 2 items
 | 
			
		||||
    <Module check_myapp.py>
 | 
			
		||||
      <Class CheckMyApp>
 | 
			
		||||
| 
						 | 
				
			
			@ -210,7 +210,7 @@ You can always peek at the collection tree without running tests like this:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project, inifile: pytest.ini
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
 | 
			
		||||
    collected 3 items
 | 
			
		||||
    <Module CWD/pythoncollection.py>
 | 
			
		||||
      <Function test_function>
 | 
			
		||||
| 
						 | 
				
			
			@ -285,7 +285,7 @@ file will be left out:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project, inifile: pytest.ini
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
 | 
			
		||||
    collected 0 items
 | 
			
		||||
 | 
			
		||||
    ======================= no tests ran in 0.12 seconds =======================
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,7 @@ Here is a nice run of several failures and how ``pytest`` presents things:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project/assertion
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR/assertion
 | 
			
		||||
    collected 44 items
 | 
			
		||||
 | 
			
		||||
    failure_demo.py FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF         [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -471,7 +471,7 @@ Here is a nice run of several failures and how ``pytest`` presents things:
 | 
			
		|||
    >    assert 1 == 0
 | 
			
		||||
    E    AssertionError
 | 
			
		||||
 | 
			
		||||
    <0-codegen 'abc-123' /home/sweet/project/assertion/failure_demo.py:201>:2: AssertionError
 | 
			
		||||
    <0-codegen 'abc-123' $REGENDOC_TMPDIR/assertion/failure_demo.py:201>:2: AssertionError
 | 
			
		||||
    ____________________ TestMoreErrors.test_complex_error _____________________
 | 
			
		||||
 | 
			
		||||
    self = <failure_demo.TestMoreErrors object at 0xdeadbeef>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -129,7 +129,7 @@ directory with the above conftest.py:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 0 items
 | 
			
		||||
 | 
			
		||||
    ======================= no tests ran in 0.12 seconds =======================
 | 
			
		||||
| 
						 | 
				
			
			@ -190,7 +190,7 @@ and when running it will see a skipped "slow" test:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_module.py .s                                                    [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -207,7 +207,7 @@ Or run it including the ``slow`` marked test:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_module.py ..                                                    [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -351,7 +351,7 @@ which will add the string to the test header accordingly:
 | 
			
		|||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    project deps: mylib-1.1
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 0 items
 | 
			
		||||
 | 
			
		||||
    ======================= no tests ran in 0.12 seconds =======================
 | 
			
		||||
| 
						 | 
				
			
			@ -381,7 +381,7 @@ which will add info only when run with "--v":
 | 
			
		|||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    info1: did you know that ...
 | 
			
		||||
    did you?
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 0 items
 | 
			
		||||
 | 
			
		||||
    ======================= no tests ran in 0.12 seconds =======================
 | 
			
		||||
| 
						 | 
				
			
			@ -394,7 +394,7 @@ and nothing when run plainly:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 0 items
 | 
			
		||||
 | 
			
		||||
    ======================= no tests ran in 0.12 seconds =======================
 | 
			
		||||
| 
						 | 
				
			
			@ -434,7 +434,7 @@ Now we can profile which test functions execute the slowest:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 3 items
 | 
			
		||||
 | 
			
		||||
    test_some_are_slow.py ...                                            [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -509,7 +509,7 @@ If we run this:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 4 items
 | 
			
		||||
 | 
			
		||||
    test_step.py .Fx.                                                    [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -593,7 +593,7 @@ We can run this:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 7 items
 | 
			
		||||
 | 
			
		||||
    test_step.py .Fx.                                                    [ 57%]
 | 
			
		||||
| 
						 | 
				
			
			@ -603,13 +603,13 @@ We can run this:
 | 
			
		|||
 | 
			
		||||
    ================================== ERRORS ==================================
 | 
			
		||||
    _______________________ ERROR at setup of test_root ________________________
 | 
			
		||||
    file /home/sweet/project/b/test_error.py, line 1
 | 
			
		||||
    file $REGENDOC_TMPDIR/b/test_error.py, line 1
 | 
			
		||||
      def test_root(db):  # no db here, will error out
 | 
			
		||||
    E       fixture 'db' not found
 | 
			
		||||
    >       available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, monkeypatch, pytestconfig, record_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
 | 
			
		||||
    >       use 'pytest --fixtures [testpath]' for help on them.
 | 
			
		||||
 | 
			
		||||
    /home/sweet/project/b/test_error.py:1
 | 
			
		||||
    $REGENDOC_TMPDIR/b/test_error.py:1
 | 
			
		||||
    ================================= FAILURES =================================
 | 
			
		||||
    ____________________ TestUserHandling.test_modification ____________________
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -707,7 +707,7 @@ and run them:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_module.py FF                                                    [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -811,7 +811,7 @@ and run it:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 3 items
 | 
			
		||||
 | 
			
		||||
    test_module.py Esetting up a test failed! test_module.py::test_setup_fails
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -74,7 +74,7 @@ marked ``smtp_connection`` fixture function.  Running the test looks like this:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_smtpsimple.py F                                                 [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -217,7 +217,7 @@ inspect what is going on and can now run the tests:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_module.py FF                                                    [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -710,7 +710,7 @@ Running the above tests results in the following test IDs being used:
 | 
			
		|||
   =========================== test session starts ============================
 | 
			
		||||
   platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
   cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
   rootdir: /home/sweet/project
 | 
			
		||||
   rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
   collected 10 items
 | 
			
		||||
   <Module test_anothersmtp.py>
 | 
			
		||||
     <Function test_showhelo[smtp.gmail.com]>
 | 
			
		||||
| 
						 | 
				
			
			@ -755,7 +755,7 @@ Running this test will *skip* the invocation of ``data_set`` with value ``2``:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 3 items
 | 
			
		||||
 | 
			
		||||
    test_fixture_marks.py::test_data[0] PASSED                           [ 33%]
 | 
			
		||||
| 
						 | 
				
			
			@ -800,7 +800,7 @@ Here we declare an ``app`` fixture which receives the previously defined
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_appsetup.py::test_smtp_connection_exists[smtp.gmail.com] PASSED [ 50%]
 | 
			
		||||
| 
						 | 
				
			
			@ -871,7 +871,7 @@ Let's run the tests in verbose mode and with looking at the print-output:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y -- $PYTHON_PREFIX/bin/python
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collecting ... collected 8 items
 | 
			
		||||
 | 
			
		||||
    test_module.py::test_0[1]   SETUP otherarg 1
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,7 +52,7 @@ That’s it. You can now execute the test function:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_sample.py F                                                     [100%]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,7 +30,7 @@ To execute it:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_sample.py F                                                     [100%]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,7 +58,7 @@ them in turn:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 3 items
 | 
			
		||||
 | 
			
		||||
    test_expectation.py ..F                                              [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -68,17 +68,13 @@ them in turn:
 | 
			
		|||
 | 
			
		||||
    test_input = '6*9', expected = 42
 | 
			
		||||
 | 
			
		||||
        @pytest.mark.parametrize("test_input,expected", [
 | 
			
		||||
            ("3+5", 8),
 | 
			
		||||
            ("2+4", 6),
 | 
			
		||||
            ("6*9", 42),
 | 
			
		||||
        ])
 | 
			
		||||
        @pytest.mark.parametrize("test_input,expected", [("3+5", 8), ("2+4", 6), ("6*9", 42)])
 | 
			
		||||
        def test_eval(test_input, expected):
 | 
			
		||||
    >       assert eval(test_input) == expected
 | 
			
		||||
    E       AssertionError: assert 54 == 42
 | 
			
		||||
    E        +  where 54 = eval('6*9')
 | 
			
		||||
 | 
			
		||||
    test_expectation.py:8: AssertionError
 | 
			
		||||
    test_expectation.py:6: AssertionError
 | 
			
		||||
    ==================== 1 failed, 2 passed in 0.12 seconds ====================
 | 
			
		||||
 | 
			
		||||
.. note::
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +123,7 @@ Let's run this:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 3 items
 | 
			
		||||
 | 
			
		||||
    test_expectation.py ..x                                              [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -228,7 +224,7 @@ Let's also run with a stringinput that will lead to a failing test:
 | 
			
		|||
    E        +  where False = <built-in method isalpha of str object at 0xdeadbeef>()
 | 
			
		||||
    E        +    where <built-in method isalpha of str object at 0xdeadbeef> = '!'.isalpha
 | 
			
		||||
 | 
			
		||||
    test_strings.py:3: AssertionError
 | 
			
		||||
    test_strings.py:4: AssertionError
 | 
			
		||||
    1 failed in 0.12 seconds
 | 
			
		||||
 | 
			
		||||
As expected our test function fails.
 | 
			
		||||
| 
						 | 
				
			
			@ -242,7 +238,7 @@ list:
 | 
			
		|||
    $ pytest -q -rs test_strings.py
 | 
			
		||||
    s                                                                    [100%]
 | 
			
		||||
    ========================= short test summary info ==========================
 | 
			
		||||
    SKIPPED [1] test_strings.py: got empty parameter set ['stringinput'], function test_valid_string at /home/sweet/project/test_strings.py:1
 | 
			
		||||
    SKIPPED [1] test_strings.py: got empty parameter set ['stringinput'], function test_valid_string at $REGENDOC_TMPDIR/test_strings.py:2
 | 
			
		||||
    1 skipped in 0.12 seconds
 | 
			
		||||
 | 
			
		||||
Note that when calling ``metafunc.parametrize`` multiple times with different parameter sets, all parameter names across
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -348,7 +348,7 @@ Running it with the report-on-xfail option gives this output:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project/example
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR/example
 | 
			
		||||
    collected 7 items
 | 
			
		||||
 | 
			
		||||
    xfail_demo.py xxxxxxx                                                [100%]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,7 +43,7 @@ Running this would result in a passed test except for the last
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_tmp_path.py F                                                   [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +110,7 @@ Running this would result in a passed test except for the last
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_tmpdir.py F                                                     [100%]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -130,7 +130,7 @@ the ``self.db`` values in the traceback:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_unittest_db.py FF                                               [100%]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -204,7 +204,7 @@ Example:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 6 items
 | 
			
		||||
 | 
			
		||||
    test_example.py .FEsxX                                               [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -227,13 +227,13 @@ Example:
 | 
			
		|||
 | 
			
		||||
    test_example.py:14: AssertionError
 | 
			
		||||
    ========================= short test summary info ==========================
 | 
			
		||||
    SKIPPED [1] /home/sweet/project/test_example.py:23: skipping this test
 | 
			
		||||
    SKIPPED [1] $REGENDOC_TMPDIR/test_example.py:23: skipping this test
 | 
			
		||||
    XFAIL test_example.py::test_xfail
 | 
			
		||||
      reason: xfailing this test
 | 
			
		||||
    XPASS test_example.py::test_xpass always xfail
 | 
			
		||||
    ERROR test_example.py::test_error
 | 
			
		||||
    FAILED test_example.py::test_fail
 | 
			
		||||
    = 1 failed, 1 passed, 1 skipped, 1 xfailed, 1 xpassed, 1 error in 0.12 seconds =
 | 
			
		||||
     1 failed, 1 passed, 1 skipped, 1 xfailed, 1 xpassed, 1 error in 0.12 seconds
 | 
			
		||||
 | 
			
		||||
The ``-r`` options accepts a number of characters after it, with ``a`` used
 | 
			
		||||
above meaning "all except passes".
 | 
			
		||||
| 
						 | 
				
			
			@ -258,7 +258,7 @@ More than one character can be used, so for example to only see failed and skipp
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 6 items
 | 
			
		||||
 | 
			
		||||
    test_example.py .FEsxX                                               [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -282,8 +282,8 @@ More than one character can be used, so for example to only see failed and skipp
 | 
			
		|||
    test_example.py:14: AssertionError
 | 
			
		||||
    ========================= short test summary info ==========================
 | 
			
		||||
    FAILED test_example.py::test_fail
 | 
			
		||||
    SKIPPED [1] /home/sweet/project/test_example.py:23: skipping this test
 | 
			
		||||
    = 1 failed, 1 passed, 1 skipped, 1 xfailed, 1 xpassed, 1 error in 0.12 seconds =
 | 
			
		||||
    SKIPPED [1] $REGENDOC_TMPDIR/test_example.py:23: skipping this test
 | 
			
		||||
     1 failed, 1 passed, 1 skipped, 1 xfailed, 1 xpassed, 1 error in 0.12 seconds
 | 
			
		||||
 | 
			
		||||
Using ``p`` lists the passing tests, whilst ``P`` adds an extra section "PASSES" with those tests that passed but had
 | 
			
		||||
captured output:
 | 
			
		||||
| 
						 | 
				
			
			@ -294,7 +294,7 @@ captured output:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 6 items
 | 
			
		||||
 | 
			
		||||
    test_example.py .FEsxX                                               [100%]
 | 
			
		||||
| 
						 | 
				
			
			@ -322,7 +322,7 @@ captured output:
 | 
			
		|||
    _________________________________ test_ok __________________________________
 | 
			
		||||
    --------------------------- Captured stdout call ---------------------------
 | 
			
		||||
    ok
 | 
			
		||||
    = 1 failed, 1 passed, 1 skipped, 1 xfailed, 1 xpassed, 1 error in 0.12 seconds =
 | 
			
		||||
     1 failed, 1 passed, 1 skipped, 1 xfailed, 1 xpassed, 1 error in 0.12 seconds
 | 
			
		||||
 | 
			
		||||
.. _pdb-option:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,14 +30,14 @@ Running pytest now produces this output:
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR
 | 
			
		||||
    collected 1 item
 | 
			
		||||
 | 
			
		||||
    test_show_warnings.py .                                              [100%]
 | 
			
		||||
 | 
			
		||||
    ============================= warnings summary =============================
 | 
			
		||||
    test_show_warnings.py::test_one
 | 
			
		||||
      /home/sweet/project/test_show_warnings.py:4: UserWarning: api v1, should use functions from v2
 | 
			
		||||
      $REGENDOC_TMPDIR/test_show_warnings.py:5: UserWarning: api v1, should use functions from v2
 | 
			
		||||
        warnings.warn(UserWarning("api v1, should use functions from v2"))
 | 
			
		||||
 | 
			
		||||
    -- Docs: https://docs.pytest.org/en/latest/warnings.html
 | 
			
		||||
| 
						 | 
				
			
			@ -56,14 +56,14 @@ them into errors:
 | 
			
		|||
        def test_one():
 | 
			
		||||
    >       assert api_v1() == 1
 | 
			
		||||
 | 
			
		||||
    test_show_warnings.py:8:
 | 
			
		||||
    test_show_warnings.py:10:
 | 
			
		||||
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
 | 
			
		||||
 | 
			
		||||
        def api_v1():
 | 
			
		||||
    >       warnings.warn(UserWarning("api v1, should use functions from v2"))
 | 
			
		||||
    E       UserWarning: api v1, should use functions from v2
 | 
			
		||||
 | 
			
		||||
    test_show_warnings.py:4: UserWarning
 | 
			
		||||
    test_show_warnings.py:5: UserWarning
 | 
			
		||||
    1 failed in 0.12 seconds
 | 
			
		||||
 | 
			
		||||
The same option can be set in the ``pytest.ini`` file using the ``filterwarnings`` ini option.
 | 
			
		||||
| 
						 | 
				
			
			@ -400,7 +400,7 @@ defines an ``__init__`` constructor, as this prevents the class from being insta
 | 
			
		|||
 | 
			
		||||
    ============================= warnings summary =============================
 | 
			
		||||
    test_pytest_warnings.py:1
 | 
			
		||||
      /home/sweet/project/test_pytest_warnings.py:1: PytestWarning: cannot collect test class 'Test' because it has a __init__ constructor
 | 
			
		||||
      $REGENDOC_TMPDIR/test_pytest_warnings.py:1: PytestWarning: cannot collect test class 'Test' because it has a __init__ constructor
 | 
			
		||||
        class Test:
 | 
			
		||||
 | 
			
		||||
    -- Docs: https://docs.pytest.org/en/latest/warnings.html
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -433,14 +433,14 @@ additionally it is possible to copy examples for an example folder before runnin
 | 
			
		|||
    =========================== test session starts ============================
 | 
			
		||||
    platform linux -- Python 3.x.y, pytest-4.x.y, py-1.x.y, pluggy-0.x.y
 | 
			
		||||
    cachedir: $PYTHON_PREFIX/.pytest_cache
 | 
			
		||||
    rootdir: /home/sweet/project, inifile: pytest.ini
 | 
			
		||||
    rootdir: $REGENDOC_TMPDIR, inifile: pytest.ini
 | 
			
		||||
    collected 2 items
 | 
			
		||||
 | 
			
		||||
    test_example.py ..                                                   [100%]
 | 
			
		||||
 | 
			
		||||
    ============================= warnings summary =============================
 | 
			
		||||
    test_example.py::test_plugin
 | 
			
		||||
      /home/sweet/project/test_example.py:4: PytestExperimentalApiWarning: testdir.copy_example is an experimental api that may change over time
 | 
			
		||||
      $REGENDOC_TMPDIR/test_example.py:4: PytestExperimentalApiWarning: testdir.copy_example is an experimental api that may change over time
 | 
			
		||||
        testdir.copy_example("test_example.py")
 | 
			
		||||
 | 
			
		||||
    -- Docs: https://docs.pytest.org/en/latest/warnings.html
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue