Current File : //usr/share/doc/pytest-2.7.0/html/en/doctest.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Doctest integration for modules and test files</title>
    
    <link rel="stylesheet" href="_static/flasky.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '',
        VERSION:     '2.7.0',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="shortcut icon" href="_static/pytest1favi.ico"/>
    <link rel="top" title="None" href="index.html" />
    <link rel="up" title="pytest reference documentation" href="apiref.html" />
    <link rel="next" title="Working with plugins and conftest files" href="plugins.html" />
    <link rel="prev" title="Running tests written for nose" href="nose.html" />
   
  
  <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9">

  </head>
  <body>
  
  

    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="plugins.html" title="Working with plugins and conftest files"
             accesskey="N">next</a></li>
        <li class="right" >
          <a href="nose.html" title="Running tests written for nose"
             accesskey="P">previous</a> |</li>
        <li><a href="contents.html">pytest-2.7.0</a> &raquo;</li>
          <li><a href="apiref.html" accesskey="U">pytest reference documentation</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="doctest-integration-for-modules-and-test-files">
<h1>Doctest integration for modules and test files<a class="headerlink" href="#doctest-integration-for-modules-and-test-files" title="Permalink to this headline">¶</a></h1>
<p>By default all files matching the <tt class="docutils literal"><span class="pre">test*.txt</span></tt> pattern will
be run through the python standard <tt class="docutils literal"><span class="pre">doctest</span></tt> module.  You
can change the pattern by issuing:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">py</span><span class="o">.</span><span class="n">test</span> <span class="o">--</span><span class="n">doctest</span><span class="o">-</span><span class="n">glob</span><span class="o">=</span><span class="s">&#39;*.rst&#39;</span>
</pre></div>
</div>
<p>on the command line.  You can also trigger running of doctests
from docstrings in all python modules (including regular
python test modules):</p>
<div class="highlight-python"><div class="highlight"><pre><span class="n">py</span><span class="o">.</span><span class="n">test</span> <span class="o">--</span><span class="n">doctest</span><span class="o">-</span><span class="n">modules</span>
</pre></div>
</div>
<p>You can make these changes permanent in your project by
putting them into a pytest.ini file like this:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="c"># content of pytest.ini</span>
<span class="p">[</span><span class="n">pytest</span><span class="p">]</span>
<span class="n">addopts</span> <span class="o">=</span> <span class="o">--</span><span class="n">doctest</span><span class="o">-</span><span class="n">modules</span>
</pre></div>
</div>
<p>If you then have a text file like this:</p>
<div class="highlight-python"><pre># content of example.rst

hello this is a doctest
&gt;&gt;&gt; x = 3
&gt;&gt;&gt; x
3</pre>
</div>
<p>and another like this:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="c"># content of mymodule.py</span>
<span class="k">def</span> <span class="nf">something</span><span class="p">():</span>
    <span class="sd">&quot;&quot;&quot; a doctest in a docstring</span>
<span class="sd">    &gt;&gt;&gt; something()</span>
<span class="sd">    42</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">return</span> <span class="mi">42</span>
</pre></div>
</div>
<p>then you can just invoke <tt class="docutils literal"><span class="pre">py.test</span></tt> without command line options:</p>
<div class="highlight-python"><pre>$ py.test
=========================== test session starts ============================
platform linux -- Python 3.4.0 -- py-1.4.26 -- pytest-2.7.0
rootdir: /tmp/doc-exec-107, inifile: pytest.ini
collected 1 items

mymodule.py .

========================= 1 passed in 0.05 seconds =========================</pre>
</div>
<p>It is possible to use fixtures using the <tt class="docutils literal"><span class="pre">getfixture</span></tt> helper:</p>
<div class="highlight-python"><pre># content of example.rst
&gt;&gt;&gt; tmp = getfixture('tmpdir')
&gt;&gt;&gt; ...
&gt;&gt;&gt;</pre>
</div>
<p>Also, <a class="reference internal" href="fixture.html#usefixtures"><em>using fixtures from classes, modules or projects</em></a> and <a class="reference internal" href="fixture.html#autouse"><em>autouse fixtures (xUnit setup on steroids)</em></a> fixtures are supported
when executing text doctest files.</p>
<p>The standard <tt class="docutils literal"><span class="pre">doctest</span></tt> module provides some setting flags to configure the
strictness of doctest tests. In py.test You can enable those flags those flags
using the configuration file. To make pytest ignore trailing whitespaces and
ignore lengthy exception stack traces you can just write:</p>
<div class="highlight-python"><pre># content of pytest.ini
[pytest]
doctest_optionflags= NORMALIZE_WHITESPACE IGNORE_EXCEPTION_DETAIL</pre>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
            <p class="logo"><a href="contents.html">
              <img class="logo" src="_static/pytest1.png" alt="Logo"/>
            </a></p><h3><a href="contents.html">Table Of Contents</a></h3>

<ul>
  <li><a href="index.html">Home</a></li>
  <li><a href="contents.html">Contents</a></li>
  <li><a href="getting-started.html">Install</a></li>
  <li><a href="example/index.html">Examples</a></li>
  <li><a href="customize.html">Customize</a></li>
  <li><a href="contact.html">Contact</a></li>
  <li><a href="talks.html">Talks/Posts</a></li>
  <li><a href="changelog.html">Changelog</a></li>
</ul><h3>Related Topics</h3>
<ul>
  <li><a href="contents.html">Documentation overview</a><ul>
  <li><a href="apiref.html">pytest reference documentation</a><ul>
      <li>Previous: <a href="nose.html" title="previous chapter">Running tests written for nose</a></li>
      <li>Next: <a href="plugins.html" title="next chapter">Working with plugins and conftest files</a></li>
  </ul></li>
  </ul></li>
</ul><h3>Useful Links</h3>
<ul>
  <li><a href="index.html">The pytest Website</a></li>
  <li><a href="contributing.html">Contribution Guide</a></li>
  <li><a href="https://pypi.python.org/pypi/pytest">pytest @ PyPI</a></li>
  <li><a href="https://bitbucket.org/pytest-dev/pytest/">pytest @ Bitbucket</a></li>
  <li><a href="http://pytest.org/latest/plugins_index/index.html">3rd party plugins</a></li>
  <li><a href="https://bitbucket.org/pytest-dev/pytest/issues?status=new&status=open">Issue Tracker</a></li>
  <li><a href="http://pytest.org/latest/pytest.pdf">PDF Documentation</a>
</ul>

<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>

  <div class="footer">
    &copy; Copyright 2014, holger krekel.
    Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
  </div>
  
<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-7597274-13']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

  </body>
</html>