Merge pull request #2873 from stephenfin/doc/skipping-entire-files
doc: Include collector config in the skip doc
This commit is contained in:
		
						commit
						111d640bdb
					
				| 
						 | 
					@ -175,21 +175,23 @@ You can always peek at the collection tree without running tests like this::
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    ======= no tests ran in 0.12 seconds ========
 | 
					    ======= no tests ran in 0.12 seconds ========
 | 
				
			||||||
 | 
					
 | 
				
			||||||
customizing test collection to find all .py files
 | 
					.. _customizing-test-collection:
 | 
				
			||||||
---------------------------------------------------------
 | 
					
 | 
				
			||||||
 | 
					Customizing test collection
 | 
				
			||||||
 | 
					---------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. regendoc:wipe
 | 
					.. regendoc:wipe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can easily instruct ``pytest`` to discover tests from every python file::
 | 
					You can easily instruct ``pytest`` to discover tests from every Python file::
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # content of pytest.ini
 | 
					    # content of pytest.ini
 | 
				
			||||||
    [pytest]
 | 
					    [pytest]
 | 
				
			||||||
    python_files = *.py
 | 
					    python_files = *.py
 | 
				
			||||||
 | 
					
 | 
				
			||||||
However, many projects will have a ``setup.py`` which they don't want to be imported. Moreover, there may files only importable by a specific python version.
 | 
					However, many projects will have a ``setup.py`` which they don't want to be
 | 
				
			||||||
For such cases you can dynamically define files to be ignored by listing
 | 
					imported. Moreover, there may files only importable by a specific python
 | 
				
			||||||
them in a ``conftest.py`` file::
 | 
					version. For such cases you can dynamically define files to be ignored by
 | 
				
			||||||
 | 
					listing them in a ``conftest.py`` file::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # content of conftest.py
 | 
					    # content of conftest.py
 | 
				
			||||||
    import sys
 | 
					    import sys
 | 
				
			||||||
| 
						 | 
					@ -198,7 +200,7 @@ them in a ``conftest.py`` file::
 | 
				
			||||||
    if sys.version_info[0] > 2:
 | 
					    if sys.version_info[0] > 2:
 | 
				
			||||||
        collect_ignore.append("pkg/module_py2.py")
 | 
					        collect_ignore.append("pkg/module_py2.py")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
And then if you have a module file like this::
 | 
					and then if you have a module file like this::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # content of pkg/module_py2.py
 | 
					    # content of pkg/module_py2.py
 | 
				
			||||||
    def test_only_on_python2():
 | 
					    def test_only_on_python2():
 | 
				
			||||||
| 
						 | 
					@ -207,13 +209,13 @@ And then if you have a module file like this::
 | 
				
			||||||
        except Exception, e:
 | 
					        except Exception, e:
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
and a setup.py dummy file like this::
 | 
					and a ``setup.py`` dummy file like this::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # content of setup.py
 | 
					    # content of setup.py
 | 
				
			||||||
    0/0  # will raise exception if imported
 | 
					    0/0  # will raise exception if imported
 | 
				
			||||||
 | 
					
 | 
				
			||||||
then a pytest run on Python2 will find the one test and will leave out the
 | 
					If you run with a Python 2 interpreter then you will find the one test and will
 | 
				
			||||||
setup.py file::
 | 
					leave out the ``setup.py`` file::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #$ pytest --collect-only
 | 
					    #$ pytest --collect-only
 | 
				
			||||||
    ====== test session starts ======
 | 
					    ====== test session starts ======
 | 
				
			||||||
| 
						 | 
					@ -225,8 +227,8 @@ setup.py file::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ====== no tests ran in 0.04 seconds ======
 | 
					    ====== no tests ran in 0.04 seconds ======
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you run with a Python3 interpreter both the one test and the setup.py file
 | 
					If you run with a Python 3 interpreter both the one test and the ``setup.py``
 | 
				
			||||||
will be left out::
 | 
					file will be left out::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $ pytest --collect-only
 | 
					    $ pytest --collect-only
 | 
				
			||||||
    ======= test session starts ========
 | 
					    ======= test session starts ========
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@
 | 
				
			||||||
.. _skipping:
 | 
					.. _skipping:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Skip and xfail: dealing with tests that cannot succeed
 | 
					Skip and xfail: dealing with tests that cannot succeed
 | 
				
			||||||
=====================================================================
 | 
					======================================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
You can mark test functions that cannot be run on certain platforms
 | 
					You can mark test functions that cannot be run on certain platforms
 | 
				
			||||||
or that you expect to fail so pytest can deal with them accordingly and
 | 
					or that you expect to fail so pytest can deal with them accordingly and
 | 
				
			||||||
| 
						 | 
					@ -142,6 +142,16 @@ will be skipped if any of the skip conditions is true.
 | 
				
			||||||
.. _`whole class- or module level`: mark.html#scoped-marking
 | 
					.. _`whole class- or module level`: mark.html#scoped-marking
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Skipping files or directories
 | 
				
			||||||
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Sometimes you may need to skip an entire file or directory, for example if the
 | 
				
			||||||
 | 
					tests rely on Python version-specific features or contain code that you do not
 | 
				
			||||||
 | 
					wish pytest to run. In this case, you must exclude the files and directories
 | 
				
			||||||
 | 
					from collection. Refer to :ref:`customizing-test-collection` for more
 | 
				
			||||||
 | 
					information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Skipping on a missing import dependency
 | 
					Skipping on a missing import dependency
 | 
				
			||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
					~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue