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
 | 
					    :type condition: bool or str
 | 
				
			||||||
    :param condition:
 | 
					    :param condition:
 | 
				
			||||||
        Condition for marking the test function as xfail (``True/False`` or a
 | 
					        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 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 Exception raises: Exception subclass expected to be raised by the test function; other exceptions will fail the test.
 | 
				
			||||||
    :keyword bool run:
 | 
					    :keyword bool run:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -265,33 +265,20 @@ internally by raising a known exception.
 | 
				
			||||||
**Reference**: :ref:`pytest.mark.xfail ref`
 | 
					**Reference**: :ref:`pytest.mark.xfail ref`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. _`xfail strict tutorial`:
 | 
					``condition`` parameter
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
``strict`` parameter
 | 
					If a test is only expected to fail under a certain condition, you can pass
 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~~
 | 
					that condition as the first 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
 | 
					.. code-block:: python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @pytest.mark.xfail(strict=True)
 | 
					    @pytest.mark.xfail(sys.platform == "win32", reason="bug in a 3rd party library")
 | 
				
			||||||
    def test_function():
 | 
					    def test_function():
 | 
				
			||||||
        ...
 | 
					        ...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Note that you have to pass a reason as well (see the parameter description at
 | 
				
			||||||
This will make ``XPASS`` ("unexpectedly passing") results from this test to fail the test suite.
 | 
					:ref:`pytest.mark.xfail ref`).
 | 
				
			||||||
 | 
					 | 
				
			||||||
You can change the default value of the ``strict`` parameter using the
 | 
					 | 
				
			||||||
``xfail_strict`` ini option:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.. code-block:: ini
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [pytest]
 | 
					 | 
				
			||||||
    xfail_strict=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
``reason`` parameter
 | 
					``reason`` parameter
 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~~
 | 
					~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
| 
						 | 
					@ -301,7 +288,7 @@ on a particular platform:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. code-block:: python
 | 
					.. 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():
 | 
					    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
 | 
					This is specially useful for xfailing tests that are crashing the interpreter and should be
 | 
				
			||||||
investigated later.
 | 
					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
 | 
					Ignoring xfail
 | 
				
			||||||
~~~~~~~~~~~~~~
 | 
					~~~~~~~~~~~~~~
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue