By default all files matching the test*.txt pattern will be run through the python standard doctest module. You can change the pattern by issuing:
py.test --doctest-glob='*.rst'
on the command line. You can also trigger running of doctests from docstrings in all python modules (including regular python test modules):
py.test --doctest-modules
You can make these changes permanent in your project by putting them into a pytest.ini file like this:
# content of pytest.ini
[pytest]
addopts = --doctest-modules
If you then have a text file like this:
# content of example.rst
hello this is a doctest
>>> x = 3
>>> x
3
and another like this:
# content of mymodule.py
def something():
""" a doctest in a docstring
>>> something()
42
"""
return 42
then you can just invoke py.test without command line options:
$ py.test
=========================== test session starts ============================
platform linux2 -- Python 2.7.3 -- pytest-2.4.2
collected 1 items
mymodule.py .
========================= 1 passed in 0.01 seconds =========================
It is possible to use fixtures using the getfixture helper:
# content of example.rst
>>> tmp = getfixture('tmpdir')
>>> ...