Better document xfail(condition) (#6957)
This commit is contained in:
parent
83e18776f6
commit
0e4a44db3b
|
@ -204,7 +204,8 @@ Marks a test function as *expected to fail*.
|
|||
:type condition: bool or str
|
||||
:param condition:
|
||||
Condition for marking the test function as xfail (``True/False`` or a
|
||||
:ref:`condition string <string conditions>`).
|
||||
:ref:`condition string <string conditions>`). If a bool, you also have
|
||||
to specify ``reason`` (see :ref:`condition string <string conditions>`).
|
||||
:keyword str reason: Reason why the test function is marked as xfail.
|
||||
:keyword Exception raises: Exception subclass expected to be raised by the test function; other exceptions will fail the test.
|
||||
:keyword bool run:
|
||||
|
|
|
@ -265,33 +265,20 @@ internally by raising a known exception.
|
|||
**Reference**: :ref:`pytest.mark.xfail ref`
|
||||
|
||||
|
||||
.. _`xfail strict tutorial`:
|
||||
``condition`` parameter
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
``strict`` parameter
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
|
||||
Both ``XFAIL`` and ``XPASS`` don't fail the test suite by default.
|
||||
You can change this by setting the ``strict`` keyword-only parameter to ``True``:
|
||||
If a test is only expected to fail under a certain condition, you can pass
|
||||
that condition as the first parameter:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@pytest.mark.xfail(strict=True)
|
||||
@pytest.mark.xfail(sys.platform == "win32", reason="bug in a 3rd party library")
|
||||
def test_function():
|
||||
...
|
||||
|
||||
|
||||
This will make ``XPASS`` ("unexpectedly passing") results from this test to fail the test suite.
|
||||
|
||||
You can change the default value of the ``strict`` parameter using the
|
||||
``xfail_strict`` ini option:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[pytest]
|
||||
xfail_strict=true
|
||||
|
||||
Note that you have to pass a reason as well (see the parameter description at
|
||||
:ref:`pytest.mark.xfail ref`).
|
||||
|
||||
``reason`` parameter
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -301,7 +288,7 @@ on a particular platform:
|
|||
|
||||
.. code-block:: python
|
||||
|
||||
@pytest.mark.xfail(sys.version_info >= (3, 6), reason="python3.6 api changes")
|
||||
@pytest.mark.xfail(reason="known parser issue")
|
||||
def test_function():
|
||||
...
|
||||
|
||||
|
@ -336,6 +323,31 @@ even executed, use the ``run`` parameter as ``False``:
|
|||
This is specially useful for xfailing tests that are crashing the interpreter and should be
|
||||
investigated later.
|
||||
|
||||
.. _`xfail strict tutorial`:
|
||||
|
||||
``strict`` parameter
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Both ``XFAIL`` and ``XPASS`` don't fail the test suite by default.
|
||||
You can change this by setting the ``strict`` keyword-only parameter to ``True``:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@pytest.mark.xfail(strict=True)
|
||||
def test_function():
|
||||
...
|
||||
|
||||
|
||||
This will make ``XPASS`` ("unexpectedly passing") results from this test to fail the test suite.
|
||||
|
||||
You can change the default value of the ``strict`` parameter using the
|
||||
``xfail_strict`` ini option:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[pytest]
|
||||
xfail_strict=true
|
||||
|
||||
|
||||
Ignoring xfail
|
||||
~~~~~~~~~~~~~~
|
||||
|
|
Loading…
Reference in New Issue