python-project/python-3.7.4-docs-html/library/development.html

350 lines
25 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Development Tools &#8212; Python 3.7.4 documentation</title>
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></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>
<script type="text/javascript" src="../_static/language_data.js"></script>
<script type="text/javascript" src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="Search within Python 3.7.4 documentation"
href="../_static/opensearch.xml"/>
<link rel="author" title="About these documents" href="../about.html" />
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="next" title="typing — Support for type hints" href="typing.html" />
<link rel="prev" title="Other Graphical User Interface Packages" href="othergui.html" />
<link rel="shortcut icon" type="image/png" href="../_static/py.png" />
<link rel="canonical" href="https://docs.python.org/3/library/development.html" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/switchers.js"></script>
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="typing.html" title="typing — Support for type hints"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="othergui.html" title="Other Graphical User Interface Packages"
accesskey="P">previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li>
<span class="language_switcher_placeholder">en</span>
<span class="version_switcher_placeholder">3.7.4</span>
<a href="../index.html">Documentation </a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">The Python Standard Library</a> &#187;</li>
<li class="right">
<div class="inline-search" style="display: none" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="Quick search" 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>
</div>
<script type="text/javascript">$('.inline-search').show(0);</script>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="development-tools">
<span id="development"></span><h1>Development Tools<a class="headerlink" href="#development-tools" title="Permalink to this headline"></a></h1>
<p>The modules described in this chapter help you write software. For example, the
<a class="reference internal" href="pydoc.html#module-pydoc" title="pydoc: Documentation generator and online help system."><code class="xref py py-mod docutils literal notranslate"><span class="pre">pydoc</span></code></a> module takes a module and generates documentation based on the
modules contents. The <a class="reference internal" href="doctest.html#module-doctest" title="doctest: Test pieces of code within docstrings."><code class="xref py py-mod docutils literal notranslate"><span class="pre">doctest</span></code></a> and <a class="reference internal" href="unittest.html#module-unittest" title="unittest: Unit testing framework for Python."><code class="xref py py-mod docutils literal notranslate"><span class="pre">unittest</span></code></a> modules contains
frameworks for writing unit tests that automatically exercise code and verify
that the expected output is produced. <strong class="program">2to3</strong> can translate Python 2.x
source code into valid Python 3.x code.</p>
<p>The list of modules described in this chapter is:</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="typing.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">typing</span></code> — Support for type hints</a><ul>
<li class="toctree-l2"><a class="reference internal" href="typing.html#type-aliases">Type aliases</a></li>
<li class="toctree-l2"><a class="reference internal" href="typing.html#newtype">NewType</a></li>
<li class="toctree-l2"><a class="reference internal" href="typing.html#callable">Callable</a></li>
<li class="toctree-l2"><a class="reference internal" href="typing.html#generics">Generics</a></li>
<li class="toctree-l2"><a class="reference internal" href="typing.html#user-defined-generic-types">User-defined generic types</a></li>
<li class="toctree-l2"><a class="reference internal" href="typing.html#the-any-type">The <code class="xref py py-data docutils literal notranslate"><span class="pre">Any</span></code> type</a></li>
<li class="toctree-l2"><a class="reference internal" href="typing.html#classes-functions-and-decorators">Classes, functions, and decorators</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="pydoc.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">pydoc</span></code> — Documentation generator and online help system</a></li>
<li class="toctree-l1"><a class="reference internal" href="doctest.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">doctest</span></code> — Test interactive Python examples</a><ul>
<li class="toctree-l2"><a class="reference internal" href="doctest.html#simple-usage-checking-examples-in-docstrings">Simple Usage: Checking Examples in Docstrings</a></li>
<li class="toctree-l2"><a class="reference internal" href="doctest.html#simple-usage-checking-examples-in-a-text-file">Simple Usage: Checking Examples in a Text File</a></li>
<li class="toctree-l2"><a class="reference internal" href="doctest.html#how-it-works">How It Works</a><ul>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#which-docstrings-are-examined">Which Docstrings Are Examined?</a></li>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#how-are-docstring-examples-recognized">How are Docstring Examples Recognized?</a></li>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#what-s-the-execution-context">Whats the Execution Context?</a></li>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#what-about-exceptions">What About Exceptions?</a></li>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#option-flags">Option Flags</a></li>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#directives">Directives</a></li>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#warnings">Warnings</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="doctest.html#basic-api">Basic API</a></li>
<li class="toctree-l2"><a class="reference internal" href="doctest.html#unittest-api">Unittest API</a></li>
<li class="toctree-l2"><a class="reference internal" href="doctest.html#advanced-api">Advanced API</a><ul>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#doctest-objects">DocTest Objects</a></li>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#example-objects">Example Objects</a></li>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#doctestfinder-objects">DocTestFinder objects</a></li>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#doctestparser-objects">DocTestParser objects</a></li>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#doctestrunner-objects">DocTestRunner objects</a></li>
<li class="toctree-l3"><a class="reference internal" href="doctest.html#outputchecker-objects">OutputChecker objects</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="doctest.html#debugging">Debugging</a></li>
<li class="toctree-l2"><a class="reference internal" href="doctest.html#soapbox">Soapbox</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="unittest.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">unittest</span></code> — Unit testing framework</a><ul>
<li class="toctree-l2"><a class="reference internal" href="unittest.html#basic-example">Basic example</a></li>
<li class="toctree-l2"><a class="reference internal" href="unittest.html#command-line-interface">Command-Line Interface</a><ul>
<li class="toctree-l3"><a class="reference internal" href="unittest.html#command-line-options">Command-line options</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="unittest.html#test-discovery">Test Discovery</a></li>
<li class="toctree-l2"><a class="reference internal" href="unittest.html#organizing-test-code">Organizing test code</a></li>
<li class="toctree-l2"><a class="reference internal" href="unittest.html#re-using-old-test-code">Re-using old test code</a></li>
<li class="toctree-l2"><a class="reference internal" href="unittest.html#skipping-tests-and-expected-failures">Skipping tests and expected failures</a></li>
<li class="toctree-l2"><a class="reference internal" href="unittest.html#distinguishing-test-iterations-using-subtests">Distinguishing test iterations using subtests</a></li>
<li class="toctree-l2"><a class="reference internal" href="unittest.html#classes-and-functions">Classes and functions</a><ul>
<li class="toctree-l3"><a class="reference internal" href="unittest.html#test-cases">Test cases</a><ul>
<li class="toctree-l4"><a class="reference internal" href="unittest.html#deprecated-aliases">Deprecated aliases</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="unittest.html#grouping-tests">Grouping tests</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.html#loading-and-running-tests">Loading and running tests</a><ul>
<li class="toctree-l4"><a class="reference internal" href="unittest.html#load-tests-protocol">load_tests Protocol</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="unittest.html#class-and-module-fixtures">Class and Module Fixtures</a><ul>
<li class="toctree-l3"><a class="reference internal" href="unittest.html#setupclass-and-teardownclass">setUpClass and tearDownClass</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.html#setupmodule-and-teardownmodule">setUpModule and tearDownModule</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="unittest.html#signal-handling">Signal Handling</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="unittest.mock.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">unittest.mock</span></code> — mock object library</a><ul>
<li class="toctree-l2"><a class="reference internal" href="unittest.mock.html#quick-guide">Quick Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="unittest.mock.html#the-mock-class">The Mock Class</a><ul>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#calling">Calling</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#deleting-attributes">Deleting Attributes</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#mock-names-and-the-name-attribute">Mock names and the name attribute</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#attaching-mocks-as-attributes">Attaching Mocks as Attributes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="unittest.mock.html#the-patchers">The patchers</a><ul>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#patch">patch</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#patch-object">patch.object</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#patch-dict">patch.dict</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#patch-multiple">patch.multiple</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#patch-methods-start-and-stop">patch methods: start and stop</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#patch-builtins">patch builtins</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#test-prefix">TEST_PREFIX</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#nesting-patch-decorators">Nesting Patch Decorators</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#where-to-patch">Where to patch</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#patching-descriptors-and-proxy-objects">Patching Descriptors and Proxy Objects</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="unittest.mock.html#magicmock-and-magic-method-support">MagicMock and magic method support</a><ul>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#mocking-magic-methods">Mocking Magic Methods</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#magic-mock">Magic Mock</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="unittest.mock.html#helpers">Helpers</a><ul>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#sentinel">sentinel</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#default">DEFAULT</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#call">call</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#create-autospec">create_autospec</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#any">ANY</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#filter-dir">FILTER_DIR</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#mock-open">mock_open</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#autospeccing">Autospeccing</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock.html#sealing-mocks">Sealing mocks</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="unittest.mock-examples.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">unittest.mock</span></code> — getting started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="unittest.mock-examples.html#using-mock">Using Mock</a><ul>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#mock-patching-methods">Mock Patching Methods</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#mock-for-method-calls-on-an-object">Mock for Method Calls on an Object</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#mocking-classes">Mocking Classes</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#naming-your-mocks">Naming your mocks</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#tracking-all-calls">Tracking all Calls</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#setting-return-values-and-attributes">Setting Return Values and Attributes</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#raising-exceptions-with-mocks">Raising exceptions with mocks</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#side-effect-functions-and-iterables">Side effect functions and iterables</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#creating-a-mock-from-an-existing-object">Creating a Mock from an Existing Object</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="unittest.mock-examples.html#patch-decorators">Patch Decorators</a></li>
<li class="toctree-l2"><a class="reference internal" href="unittest.mock-examples.html#further-examples">Further Examples</a><ul>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#mocking-chained-calls">Mocking chained calls</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#partial-mocking">Partial mocking</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#mocking-a-generator-method">Mocking a Generator Method</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#applying-the-same-patch-to-every-test-method">Applying the same patch to every test method</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#mocking-unbound-methods">Mocking Unbound Methods</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#checking-multiple-calls-with-mock">Checking multiple calls with mock</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#coping-with-mutable-arguments">Coping with mutable arguments</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#nesting-patches">Nesting Patches</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#mocking-a-dictionary-with-magicmock">Mocking a dictionary with MagicMock</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#mock-subclasses-and-their-attributes">Mock subclasses and their attributes</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#mocking-imports-with-patch-dict">Mocking imports with patch.dict</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#tracking-order-of-calls-and-less-verbose-call-assertions">Tracking order of calls and less verbose call assertions</a></li>
<li class="toctree-l3"><a class="reference internal" href="unittest.mock-examples.html#more-complex-argument-matching">More complex argument matching</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="2to3.html">2to3 - Automated Python 2 to 3 code translation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="2to3.html#using-2to3">Using 2to3</a></li>
<li class="toctree-l2"><a class="reference internal" href="2to3.html#fixers">Fixers</a></li>
<li class="toctree-l2"><a class="reference internal" href="2to3.html#module-lib2to3"><code class="xref py py-mod docutils literal notranslate"><span class="pre">lib2to3</span></code> - 2to3s library</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="test.html"><code class="xref py py-mod docutils literal notranslate"><span class="pre">test</span></code> — Regression tests package for Python</a><ul>
<li class="toctree-l2"><a class="reference internal" href="test.html#writing-unit-tests-for-the-test-package">Writing Unit Tests for the <code class="xref py py-mod docutils literal notranslate"><span class="pre">test</span></code> package</a></li>
<li class="toctree-l2"><a class="reference internal" href="test.html#running-tests-using-the-command-line-interface">Running tests using the command-line interface</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="test.html#module-test.support"><code class="xref py py-mod docutils literal notranslate"><span class="pre">test.support</span></code> — Utilities for the Python test suite</a></li>
<li class="toctree-l1"><a class="reference internal" href="test.html#module-test.support.script_helper"><code class="xref py py-mod docutils literal notranslate"><span class="pre">test.support.script_helper</span></code> — Utilities for the Python execution tests</a></li>
</ul>
</div>
<p>See also the Python development mode: the <a class="reference internal" href="../using/cmdline.html#id5"><code class="xref std std-option docutils literal notranslate"><span class="pre">-X</span></code></a> <code class="docutils literal notranslate"><span class="pre">dev</span></code> option and
<span class="target" id="index-0"></span><a class="reference internal" href="../using/cmdline.html#envvar-PYTHONDEVMODE"><code class="xref std std-envvar docutils literal notranslate"><span class="pre">PYTHONDEVMODE</span></code></a> environment variable.</p>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h4>Previous topic</h4>
<p class="topless"><a href="othergui.html"
title="previous chapter">Other Graphical User Interface Packages</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="typing.html"
title="next chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">typing</span></code> — Support for type hints</a></p>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">Report a Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.7/Doc/library/development.rst"
rel="nofollow">Show Source
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="typing.html" title="typing — Support for type hints"
>next</a> |</li>
<li class="right" >
<a href="othergui.html" title="Other Graphical User Interface Packages"
>previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li>
<span class="language_switcher_placeholder">en</span>
<span class="version_switcher_placeholder">3.7.4</span>
<a href="../index.html">Documentation </a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> &#187;</li>
<li class="right">
<div class="inline-search" style="display: none" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="Quick search" 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>
</div>
<script type="text/javascript">$('.inline-search').show(0);</script>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">Copyright</a> 2001-2019, Python Software Foundation.
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
Last updated on Jul 13, 2019.
<a href="../bugs.html">Found a bug</a>?
<br />
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 2.0.1.
</div>
</body>
</html>