commit
						e4103cb02c
					
				|  | @ -18,6 +18,22 @@ with advance notice in the **Deprecations** section of releases. | ||||||
| 
 | 
 | ||||||
| .. towncrier release notes start | .. towncrier release notes start | ||||||
| 
 | 
 | ||||||
|  | pytest 5.1.3 (2019-09-18) | ||||||
|  | ========================= | ||||||
|  | 
 | ||||||
|  | Bug Fixes | ||||||
|  | --------- | ||||||
|  | 
 | ||||||
|  | - `#5807 <https://github.com/pytest-dev/pytest/issues/5807>`_: Fix pypy3.6 (nightly) on windows. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - `#5811 <https://github.com/pytest-dev/pytest/issues/5811>`_: Handle ``--fulltrace`` correctly with ``pytest.raises``. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | - `#5819 <https://github.com/pytest-dev/pytest/issues/5819>`_: Windows: Fix regression with conftest whose qualified name contains uppercase | ||||||
|  |   characters (introduced by #5792). | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| pytest 5.1.2 (2019-08-30) | pytest 5.1.2 (2019-08-30) | ||||||
| ========================= | ========================= | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1 +0,0 @@ | ||||||
| Fix pypy3.6 (nightly) on windows. |  | ||||||
|  | @ -1 +0,0 @@ | ||||||
| Handle ``--fulltrace`` correctly with ``pytest.raises``. |  | ||||||
|  | @ -1,2 +0,0 @@ | ||||||
| Windows: Fix regression with conftest whose qualified name contains uppercase |  | ||||||
| characters (introduced by #5792). |  | ||||||
|  | @ -16,7 +16,7 @@ REGENDOC_ARGS := \ | ||||||
| 	--normalize "/[ \t]+\n/\n/" \
 | 	--normalize "/[ \t]+\n/\n/" \
 | ||||||
| 	--normalize "~\$$REGENDOC_TMPDIR~/home/sweet/project~" \
 | 	--normalize "~\$$REGENDOC_TMPDIR~/home/sweet/project~" \
 | ||||||
| 	--normalize "~/path/to/example~/home/sweet/project~" \
 | 	--normalize "~/path/to/example~/home/sweet/project~" \
 | ||||||
| 	--normalize "/in \d+.\d+s ==/in 0.12s ==/" \
 | 	--normalize "/in \d.\d\ds/in 0.12s/" \
 | ||||||
| 	--normalize "@/tmp/pytest-of-.*/pytest-\d+@PYTEST_TMPDIR@" \
 | 	--normalize "@/tmp/pytest-of-.*/pytest-\d+@PYTEST_TMPDIR@" \
 | ||||||
| 	--normalize "@pytest-(\d+)\\.[^ ,]+@pytest-\1.x.y@" \
 | 	--normalize "@pytest-(\d+)\\.[^ ,]+@pytest-\1.x.y@" \
 | ||||||
| 	--normalize "@(This is pytest version )(\d+)\\.[^ ,]+@\1\2.x.y@" \
 | 	--normalize "@(This is pytest version )(\d+)\\.[^ ,]+@\1\2.x.y@" \
 | ||||||
|  |  | ||||||
|  | @ -6,6 +6,7 @@ Release announcements | ||||||
|    :maxdepth: 2 |    :maxdepth: 2 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |    release-5.1.3 | ||||||
|    release-5.1.2 |    release-5.1.2 | ||||||
|    release-5.1.1 |    release-5.1.1 | ||||||
|    release-5.1.0 |    release-5.1.0 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,23 @@ | ||||||
|  | pytest-5.1.3 | ||||||
|  | ======================================= | ||||||
|  | 
 | ||||||
|  | pytest 5.1.3 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 | ||||||
|  | * Christian Neumüller | ||||||
|  | * Daniel Hahler | ||||||
|  | * Gene Wood | ||||||
|  | * Hugo | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Happy testing, | ||||||
|  | The pytest Development Team | ||||||
|  | @ -279,7 +279,7 @@ the conftest file: | ||||||
|    E            vals: 1 != 2 |    E            vals: 1 != 2 | ||||||
| 
 | 
 | ||||||
|    test_foocompare.py:12: AssertionError |    test_foocompare.py:12: AssertionError | ||||||
|    1 failed in 0.02s |    1 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| .. _assert-details: | .. _assert-details: | ||||||
| .. _`assert introspection`: | .. _`assert introspection`: | ||||||
|  |  | ||||||
|  | @ -160,7 +160,7 @@ For information about fixtures, see :ref:`fixtures`. To see a complete list of a | ||||||
|             in python < 3.6 this is a pathlib2.Path |             in python < 3.6 this is a pathlib2.Path | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     no tests ran in 0.00s |     no tests ran in 0.12s | ||||||
| 
 | 
 | ||||||
| You can also interactively ask for help, e.g. by typing on the Python interactive prompt something like: | You can also interactively ask for help, e.g. by typing on the Python interactive prompt something like: | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -75,7 +75,7 @@ If you run this for the first time you will see two failures: | ||||||
|     E           Failed: bad luck |     E           Failed: bad luck | ||||||
| 
 | 
 | ||||||
|     test_50.py:7: Failed |     test_50.py:7: Failed | ||||||
|     2 failed, 48 passed in 0.07s |     2 failed, 48 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| If you then run it with ``--lf``: | If you then run it with ``--lf``: | ||||||
| 
 | 
 | ||||||
|  | @ -230,7 +230,7 @@ If you run this command for the first time, you can see the print statement: | ||||||
|     test_caching.py:20: AssertionError |     test_caching.py:20: AssertionError | ||||||
|     -------------------------- Captured stdout setup --------------------------- |     -------------------------- Captured stdout setup --------------------------- | ||||||
|     running expensive computation... |     running expensive computation... | ||||||
|     1 failed in 0.02s |     1 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| If you run it a second time, the value will be retrieved from | If you run it a second time, the value will be retrieved from | ||||||
| the cache and nothing will be printed: | the cache and nothing will be printed: | ||||||
|  | @ -249,7 +249,7 @@ the cache and nothing will be printed: | ||||||
|     E       assert 42 == 23 |     E       assert 42 == 23 | ||||||
| 
 | 
 | ||||||
|     test_caching.py:20: AssertionError |     test_caching.py:20: AssertionError | ||||||
|     1 failed in 0.02s |     1 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| See the :ref:`cache-api` for more details. | See the :ref:`cache-api` for more details. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -499,7 +499,7 @@ The output is as follows: | ||||||
|     $ pytest -q -s |     $ pytest -q -s | ||||||
|     Mark(name='my_marker', args=(<function hello_world at 0xdeadbeef>,), kwargs={}) |     Mark(name='my_marker', args=(<function hello_world at 0xdeadbeef>,), kwargs={}) | ||||||
|     . |     . | ||||||
|     1 passed in 0.01s |     1 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| We can see that the custom marker has its argument set extended with the function ``hello_world``. This is the key difference between creating a custom marker as a callable, which invokes ``__call__`` behind the scenes, and using ``with_args``. | We can see that the custom marker has its argument set extended with the function ``hello_world``. This is the key difference between creating a custom marker as a callable, which invokes ``__call__`` behind the scenes, and using ``with_args``. | ||||||
| 
 | 
 | ||||||
|  | @ -551,7 +551,7 @@ Let's run this without capturing output and see what we get: | ||||||
|     glob args=('class',) kwargs={'x': 2} |     glob args=('class',) kwargs={'x': 2} | ||||||
|     glob args=('module',) kwargs={'x': 1} |     glob args=('module',) kwargs={'x': 1} | ||||||
|     . |     . | ||||||
|     1 passed in 0.02s |     1 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| marking platform specific tests with pytest | marking platform specific tests with pytest | ||||||
| -------------------------------------------------------------- | -------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | @ -54,7 +54,7 @@ This means that we only run 2 tests if we do not pass ``--all``: | ||||||
| 
 | 
 | ||||||
|     $ pytest -q test_compute.py |     $ pytest -q test_compute.py | ||||||
|     ..                                                                   [100%] |     ..                                                                   [100%] | ||||||
|     2 passed in 0.01s |     2 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| We run only two computations, so we see two dots. | We run only two computations, so we see two dots. | ||||||
| let's run the full monty: | let's run the full monty: | ||||||
|  | @ -73,7 +73,7 @@ let's run the full monty: | ||||||
|     E       assert 4 < 4 |     E       assert 4 < 4 | ||||||
| 
 | 
 | ||||||
|     test_compute.py:4: AssertionError |     test_compute.py:4: AssertionError | ||||||
|     1 failed, 4 passed in 0.02s |     1 failed, 4 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| As expected when running the full range of ``param1`` values | As expected when running the full range of ``param1`` values | ||||||
| we'll get an error on the last one. | we'll get an error on the last one. | ||||||
|  | @ -343,7 +343,7 @@ And then when we run the test: | ||||||
|     E           Failed: deliberately failing for demo purposes |     E           Failed: deliberately failing for demo purposes | ||||||
| 
 | 
 | ||||||
|     test_backends.py:8: Failed |     test_backends.py:8: Failed | ||||||
|     1 failed, 1 passed in 0.02s |     1 failed, 1 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| The first invocation with ``db == "DB1"`` passed while the second with ``db == "DB2"`` failed.  Our ``db`` fixture function has instantiated each of the DB values during the setup phase while the ``pytest_generate_tests`` generated two according calls to the ``test_db_initialized`` during the collection phase. | The first invocation with ``db == "DB1"`` passed while the second with ``db == "DB2"`` failed.  Our ``db`` fixture function has instantiated each of the DB values during the setup phase while the ``pytest_generate_tests`` generated two according calls to the ``test_db_initialized`` during the collection phase. | ||||||
| 
 | 
 | ||||||
|  | @ -454,7 +454,7 @@ argument sets to use for each test function.  Let's run it: | ||||||
|     E       assert 1 == 2 |     E       assert 1 == 2 | ||||||
| 
 | 
 | ||||||
|     test_parametrize.py:21: AssertionError |     test_parametrize.py:21: AssertionError | ||||||
|     1 failed, 2 passed in 0.03s |     1 failed, 2 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| Indirect parametrization with multiple fixtures | Indirect parametrization with multiple fixtures | ||||||
| -------------------------------------------------------------- | -------------------------------------------------------------- | ||||||
|  | @ -479,7 +479,7 @@ Running it results in some skips if we don't have all the python interpreters in | ||||||
|    ========================= short test summary info ========================== |    ========================= short test summary info ========================== | ||||||
|    SKIPPED [12] $REGENDOC_TMPDIR/CWD/multipython.py:30: 'python3.5' not found |    SKIPPED [12] $REGENDOC_TMPDIR/CWD/multipython.py:30: 'python3.5' not found | ||||||
|    SKIPPED [12] $REGENDOC_TMPDIR/CWD/multipython.py:30: 'python3.7' not found |    SKIPPED [12] $REGENDOC_TMPDIR/CWD/multipython.py:30: 'python3.7' not found | ||||||
|    3 passed, 24 skipped in 0.24s |    3 passed, 24 skipped in 0.12s | ||||||
| 
 | 
 | ||||||
| Indirect parametrization of optional implementations/imports | Indirect parametrization of optional implementations/imports | ||||||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | ||||||
|  |  | ||||||
|  | @ -65,7 +65,7 @@ Let's run this without supplying our new option: | ||||||
|     test_sample.py:6: AssertionError |     test_sample.py:6: AssertionError | ||||||
|     --------------------------- Captured stdout call --------------------------- |     --------------------------- Captured stdout call --------------------------- | ||||||
|     first |     first | ||||||
|     1 failed in 0.02s |     1 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| And now with supplying a command line option: | And now with supplying a command line option: | ||||||
| 
 | 
 | ||||||
|  | @ -89,7 +89,7 @@ And now with supplying a command line option: | ||||||
|     test_sample.py:6: AssertionError |     test_sample.py:6: AssertionError | ||||||
|     --------------------------- Captured stdout call --------------------------- |     --------------------------- Captured stdout call --------------------------- | ||||||
|     second |     second | ||||||
|     1 failed in 0.02s |     1 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| You can see that the command line option arrived in our test.  This | You can see that the command line option arrived in our test.  This | ||||||
| completes the basic pattern.  However, one often rather wants to process | completes the basic pattern.  However, one often rather wants to process | ||||||
|  | @ -261,7 +261,7 @@ Let's run our little function: | ||||||
|     E       Failed: not configured: 42 |     E       Failed: not configured: 42 | ||||||
| 
 | 
 | ||||||
|     test_checkconfig.py:11: Failed |     test_checkconfig.py:11: Failed | ||||||
|     1 failed in 0.02s |     1 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| If you only want to hide certain exceptions, you can set ``__tracebackhide__`` | If you only want to hide certain exceptions, you can set ``__tracebackhide__`` | ||||||
| to a callable which gets the ``ExceptionInfo`` object. You can for example use | to a callable which gets the ``ExceptionInfo`` object. You can for example use | ||||||
|  | @ -445,7 +445,7 @@ Now we can profile which test functions execute the slowest: | ||||||
| 
 | 
 | ||||||
|     ========================= slowest 3 test durations ========================= |     ========================= slowest 3 test durations ========================= | ||||||
|     0.30s call     test_some_are_slow.py::test_funcslow2 |     0.30s call     test_some_are_slow.py::test_funcslow2 | ||||||
|     0.20s call     test_some_are_slow.py::test_funcslow1 |     0.21s call     test_some_are_slow.py::test_funcslow1 | ||||||
|     0.10s call     test_some_are_slow.py::test_funcfast |     0.10s call     test_some_are_slow.py::test_funcfast | ||||||
|     ============================ 3 passed in 0.12s ============================= |     ============================ 3 passed in 0.12s ============================= | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -81,4 +81,4 @@ If you run this without output capturing: | ||||||
|     .test other |     .test other | ||||||
|     .test_unit1 method called |     .test_unit1 method called | ||||||
|     . |     . | ||||||
|     4 passed in 0.01s |     4 passed in 0.12s | ||||||
|  |  | ||||||
|  | @ -361,7 +361,7 @@ Let's execute it: | ||||||
|     $ pytest -s -q --tb=no |     $ pytest -s -q --tb=no | ||||||
|     FFteardown smtp |     FFteardown smtp | ||||||
| 
 | 
 | ||||||
|     2 failed in 0.79s |     2 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| We see that the ``smtp_connection`` instance is finalized after the two | We see that the ``smtp_connection`` instance is finalized after the two | ||||||
| tests finished execution.  Note that if we decorated our fixture | tests finished execution.  Note that if we decorated our fixture | ||||||
|  | @ -515,7 +515,7 @@ again, nothing much has changed: | ||||||
|     $ pytest -s -q --tb=no |     $ pytest -s -q --tb=no | ||||||
|     FFfinalizing <smtplib.SMTP object at 0xdeadbeef> (smtp.gmail.com) |     FFfinalizing <smtplib.SMTP object at 0xdeadbeef> (smtp.gmail.com) | ||||||
| 
 | 
 | ||||||
|     2 failed in 0.77s |     2 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| Let's quickly create another test module that actually sets the | Let's quickly create another test module that actually sets the | ||||||
| server URL in its module namespace: | server URL in its module namespace: | ||||||
|  | @ -692,7 +692,7 @@ So let's just do another run: | ||||||
|     test_module.py:13: AssertionError |     test_module.py:13: AssertionError | ||||||
|     ------------------------- Captured stdout teardown ------------------------- |     ------------------------- Captured stdout teardown ------------------------- | ||||||
|     finalizing <smtplib.SMTP object at 0xdeadbeef> |     finalizing <smtplib.SMTP object at 0xdeadbeef> | ||||||
|     4 failed in 1.69s |     4 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| We see that our two test functions each ran twice, against the different | We see that our two test functions each ran twice, against the different | ||||||
| ``smtp_connection`` instances.  Note also, that with the ``mail.python.org`` | ``smtp_connection`` instances.  Note also, that with the ``mail.python.org`` | ||||||
|  | @ -1043,7 +1043,7 @@ to verify our fixture is activated and the tests pass: | ||||||
| 
 | 
 | ||||||
|     $ pytest -q |     $ pytest -q | ||||||
|     ..                                                                   [100%] |     ..                                                                   [100%] | ||||||
|     2 passed in 0.01s |     2 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| You can specify multiple fixtures like this: | You can specify multiple fixtures like this: | ||||||
| 
 | 
 | ||||||
|  | @ -1151,7 +1151,7 @@ If we run it, we get two passing tests: | ||||||
| 
 | 
 | ||||||
|     $ pytest -q |     $ pytest -q | ||||||
|     ..                                                                   [100%] |     ..                                                                   [100%] | ||||||
|     2 passed in 0.01s |     2 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| Here is how autouse fixtures work in other scopes: | Here is how autouse fixtures work in other scopes: | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -108,7 +108,7 @@ Execute the test function with “quiet” reporting mode: | ||||||
| 
 | 
 | ||||||
|     $ pytest -q test_sysexit.py |     $ pytest -q test_sysexit.py | ||||||
|     .                                                                    [100%] |     .                                                                    [100%] | ||||||
|     1 passed in 0.01s |     1 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| Group multiple tests in a class | Group multiple tests in a class | ||||||
| -------------------------------------------------------------- | -------------------------------------------------------------- | ||||||
|  | @ -145,7 +145,7 @@ Once you develop multiple tests, you may want to group them into a class. pytest | ||||||
|     E        +  where False = hasattr('hello', 'check') |     E        +  where False = hasattr('hello', 'check') | ||||||
| 
 | 
 | ||||||
|     test_class.py:8: AssertionError |     test_class.py:8: AssertionError | ||||||
|     1 failed, 1 passed in 0.02s |     1 failed, 1 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| The first test passed and the second failed. You can easily see the intermediate values in the assertion to help you understand the reason for the failure. | The first test passed and the second failed. You can easily see the intermediate values in the assertion to help you understand the reason for the failure. | ||||||
| 
 | 
 | ||||||
|  | @ -180,7 +180,7 @@ List the name ``tmpdir`` in the test function signature and ``pytest`` will look | ||||||
|     test_tmpdir.py:3: AssertionError |     test_tmpdir.py:3: AssertionError | ||||||
|     --------------------------- Captured stdout call --------------------------- |     --------------------------- Captured stdout call --------------------------- | ||||||
|     PYTEST_TMPDIR/test_needsfiles0 |     PYTEST_TMPDIR/test_needsfiles0 | ||||||
|     1 failed in 0.02s |     1 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| More info on tmpdir handling is available at :ref:`Temporary directories and files <tmpdir handling>`. | More info on tmpdir handling is available at :ref:`Temporary directories and files <tmpdir handling>`. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -205,7 +205,7 @@ If we now pass two stringinput values, our test will run twice: | ||||||
| 
 | 
 | ||||||
|     $ pytest -q --stringinput="hello" --stringinput="world" test_strings.py |     $ pytest -q --stringinput="hello" --stringinput="world" test_strings.py | ||||||
|     ..                                                                   [100%] |     ..                                                                   [100%] | ||||||
|     2 passed in 0.01s |     2 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| Let's also run with a stringinput that will lead to a failing test: | Let's also run with a stringinput that will lead to a failing test: | ||||||
| 
 | 
 | ||||||
|  | @ -225,7 +225,7 @@ Let's also run with a stringinput that will lead to a failing test: | ||||||
|     E        +    where <built-in method isalpha of str object at 0xdeadbeef> = '!'.isalpha |     E        +    where <built-in method isalpha of str object at 0xdeadbeef> = '!'.isalpha | ||||||
| 
 | 
 | ||||||
|     test_strings.py:4: AssertionError |     test_strings.py:4: AssertionError | ||||||
|     1 failed in 0.02s |     1 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| As expected our test function fails. | As expected our test function fails. | ||||||
| 
 | 
 | ||||||
|  | @ -239,7 +239,7 @@ list: | ||||||
|     s                                                                    [100%] |     s                                                                    [100%] | ||||||
|     ========================= short test summary info ========================== |     ========================= short test summary info ========================== | ||||||
|     SKIPPED [1] test_strings.py: got empty parameter set ['stringinput'], function test_valid_string at $REGENDOC_TMPDIR/test_strings.py:2 |     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.00s |     1 skipped in 0.12s | ||||||
| 
 | 
 | ||||||
| Note that when calling ``metafunc.parametrize`` multiple times with different parameter sets, all parameter names across | Note that when calling ``metafunc.parametrize`` multiple times with different parameter sets, all parameter names across | ||||||
| those sets cannot be duplicated, otherwise an error will be raised. | those sets cannot be duplicated, otherwise an error will be raised. | ||||||
|  |  | ||||||
|  | @ -219,7 +219,7 @@ Running this test module ...: | ||||||
| 
 | 
 | ||||||
|     $ pytest -q test_unittest_cleandir.py |     $ pytest -q test_unittest_cleandir.py | ||||||
|     .                                                                    [100%] |     .                                                                    [100%] | ||||||
|     1 passed in 0.01s |     1 passed in 0.12s | ||||||
| 
 | 
 | ||||||
| ... gives us one passed test because the ``initdir`` fixture function | ... gives us one passed test because the ``initdir`` fixture function | ||||||
| was executed ahead of the ``test_method``. | was executed ahead of the ``test_method``. | ||||||
|  |  | ||||||
|  | @ -64,7 +64,7 @@ them into errors: | ||||||
|     E       UserWarning: api v1, should use functions from v2 |     E       UserWarning: api v1, should use functions from v2 | ||||||
| 
 | 
 | ||||||
|     test_show_warnings.py:5: UserWarning |     test_show_warnings.py:5: UserWarning | ||||||
|     1 failed in 0.02s |     1 failed in 0.12s | ||||||
| 
 | 
 | ||||||
| The same option can be set in the ``pytest.ini`` file using the ``filterwarnings`` ini option. | The same option can be set in the ``pytest.ini`` file using the ``filterwarnings`` ini option. | ||||||
| For example, the configuration below will ignore all user warnings, but will transform | For example, the configuration below will ignore all user warnings, but will transform | ||||||
|  | @ -407,7 +407,7 @@ defines an ``__init__`` constructor, as this prevents the class from being insta | ||||||
|         class Test: |         class Test: | ||||||
| 
 | 
 | ||||||
|     -- Docs: https://docs.pytest.org/en/latest/warnings.html |     -- Docs: https://docs.pytest.org/en/latest/warnings.html | ||||||
|     1 warnings in 0.00s |     1 warnings in 0.12s | ||||||
| 
 | 
 | ||||||
| These warnings might be filtered using the same builtin mechanisms used to filter other types of warnings. | These warnings might be filtered using the same builtin mechanisms used to filter other types of warnings. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue