mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 06:55:36 +08:00
1 line
22 KiB
HTML
1 line
22 KiB
HTML
<div class="body" role="main"><div class="section" id="development-tools"><h1><span class="yiyi-st" id="yiyi-9">26. </span><span class="yiyi-st" id="yiyi-10">开发工具</span></h1><p><span class="yiyi-st" id="yiyi-11">本章中描述的模块有助于编写软件。</span><span class="yiyi-st" id="yiyi-12">例如,<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"><span class="pre">pydoc</span></code></a>模块接受一个模块并根据模块的内容生成文档。</span><span class="yiyi-st" id="yiyi-13"><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"><span class="pre">doctest</span></code></a>和<a class="reference internal" href="unittest.html#module-unittest" title="unittest: Unit testing framework for Python."><code class="xref py py-mod docutils literal"><span class="pre">unittest</span></code></a>模块包含用于编写单元测试的框架,可自动执行代码并验证预期输出是否生成。</span><span class="yiyi-st" id="yiyi-14"><strong class="program">2to3</strong>可以将Python 2.x源代码翻译成有效的Python 3.x代码。</span></p><p><span class="yiyi-st" id="yiyi-15">本章中描述的模块列表是:</span></p><div class="toctree-wrapper compound"><ul><li class="toctree-l1"><span class="yiyi-st" id="yiyi-23"><a class="reference internal" href="typing.html">26.1. <code class="docutils literal"><span class="pre">typing</span></code> - 支持类型提示</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-16"><a class="reference internal" href="typing.html#type-aliases">26.1.1.类型别名</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-17"><a class="reference internal" href="typing.html#newtype">26.1.2. NewType</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-18"><a class="reference internal" href="typing.html#callable">26.1.3.可调用</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-19"><a class="reference internal" href="typing.html#generics">26.1.4.泛型</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-20"><a class="reference internal" href="typing.html#user-defined-generic-types">26.1.5.用户定义的泛型类型</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-21"><a class="reference internal" href="typing.html#the-any-type">26.1.6. <code class="docutils literal"><span class="pre">Any</span></code>类型</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-22"><a class="reference internal" href="typing.html#classes-functions-and-decorators">26.1.7.类,函数和装饰器</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-24"><a class="reference internal" href="pydoc.html">26.2. <code class="docutils literal"><span class="pre">pydoc</span></code> - 文档生成器和在线帮助系统</a></span></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-46"><a class="reference internal" href="doctest.html">26.3. <code class="docutils literal"><span class="pre">doctest</span></code> - 测试互动Python示例</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-25"><a class="reference internal" href="doctest.html#simple-usage-checking-examples-in-docstrings">26.3.1.简单用法:检查Docstrings中的示例</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-26"><a class="reference internal" href="doctest.html#simple-usage-checking-examples-in-a-text-file">26.3.2.简单用法:检查文本文件中的示例</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-34"><a class="reference internal" href="doctest.html#how-it-works">26.3.3.工作原理</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-27"><a class="reference internal" href="doctest.html#which-docstrings-are-examined">26.3.3.1.哪些文档字符串被检查?</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-28"><a class="reference internal" href="doctest.html#how-are-docstring-examples-recognized">26.3.3.2.如何识别Docstring示例?</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-29"><a class="reference internal" href="doctest.html#what-s-the-execution-context">26.3.3.3.什么是执行上下文?</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-30"><a class="reference internal" href="doctest.html#what-about-exceptions">26.3.3.4.关于异常?</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-31"><a class="reference internal" href="doctest.html#option-flags">26.3.3.5.选项标志</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-32"><a class="reference internal" href="doctest.html#directives">26.3.3.6.指令</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-33"><a class="reference internal" href="doctest.html#warnings">26.3.3.7.警告</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-35"><a class="reference internal" href="doctest.html#basic-api">26.3.4.基本API</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-36"><a class="reference internal" href="doctest.html#unittest-api"> 26.3.5. Unittest API</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-43"><a class="reference internal" href="doctest.html#advanced-api">26.3.6.高级API</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-37"><a class="reference internal" href="doctest.html#doctest-objects">26.3.6.1. DocTest对象</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-38"><a class="reference internal" href="doctest.html#example-objects">26.3.6.2.示例对象</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-39"><a class="reference internal" href="doctest.html#doctestfinder-objects">26.3.6.3. DocTestFinder对象</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-40"><a class="reference internal" href="doctest.html#doctestparser-objects">26.3.6.4. DocTestParser对象</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-41"><a class="reference internal" href="doctest.html#doctestrunner-objects">26.3.6.5. DocTestRunner对象</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-42"><a class="reference internal" href="doctest.html#outputchecker-objects">26.3.6.6. OutputChecker对象</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-44"><a class="reference internal" href="doctest.html#debugging">26.3.7.调试</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-45"><a class="reference internal" href="doctest.html#soapbox">26.3.8. Soapbox</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-65"><a class="reference internal" href="unittest.html">26.4. <code class="docutils literal"><span class="pre">unittest</span></code> - 单元测试框架</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-47"><a class="reference internal" href="unittest.html#basic-example">26.4.1.基本示例</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-49"><a class="reference internal" href="unittest.html#command-line-interface">26.4.2.命令行接口</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-48"><a class="reference internal" href="unittest.html#command-line-options">26.4.2.1.命令行选项</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-50"><a class="reference internal" href="unittest.html#test-discovery">26.4.3.测试发现</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-51"><a class="reference internal" href="unittest.html#organizing-test-code">26.4.4.整理测试代码</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-52"><a class="reference internal" href="unittest.html#re-using-old-test-code">26.4.5.重新使用旧测试代码</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-53"><a class="reference internal" href="unittest.html#skipping-tests-and-expected-failures">26.4.6.跳过测试和预期失败</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-54"><a class="reference internal" href="unittest.html#distinguishing-test-iterations-using-subtests">26.4.7.使用分测验</a>区分测试迭代</span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-60"><a class="reference internal" href="unittest.html#classes-and-functions">26.4.8.类和函数</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-56"><a class="reference internal" href="unittest.html#test-cases">26.4.8.1.测试用例</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-55"><a class="reference internal" href="unittest.html#deprecated-aliases">26.4.8.1.1.已弃用别名</a></span></li></ul></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-57"><a class="reference internal" href="unittest.html#grouping-tests">26.4.8.2.分组测试</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-59"><a class="reference internal" href="unittest.html#loading-and-running-tests">26.4.8.3.正在载入并运行测试</a></span><ul><li class="toctree-l4"><span class="yiyi-st" id="yiyi-58"><a class="reference internal" href="unittest.html#load-tests-protocol">26.4.8.3.1. load_tests协议</a></span></li></ul></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-63"><a class="reference internal" href="unittest.html#class-and-module-fixtures">26.4.9.类和模块夹具</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-61"><a class="reference internal" href="unittest.html#setupclass-and-teardownclass">26.4.9.1. setUpClass和tearDownClass</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-62"><a class="reference internal" href="unittest.html#setupmodule-and-teardownmodule">26.4.9.2. setUpModule和tearDownModule</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-64"><a class="reference internal" href="unittest.html#signal-handling">26.4.10.信号处理</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-95"><a class="reference internal" href="unittest.mock.html">26.5. <code class="docutils literal"><span class="pre">unittest.mock</span></code> - mock object库</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-66"><a class="reference internal" href="unittest.mock.html#quick-guide">26.5.1.快速指南</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-71"><a class="reference internal" href="unittest.mock.html#the-mock-class">26.5.2.模拟类</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-67"><a class="reference internal" href="unittest.mock.html#calling">26.5.2.1.调用</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-68"><a class="reference internal" href="unittest.mock.html#deleting-attributes">26.5.2.2.删除属性</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-69"><a class="reference internal" href="unittest.mock.html#mock-names-and-the-name-attribute">26.5.2.3.模拟名称和名称属性</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-70"><a class="reference internal" href="unittest.mock.html#attaching-mocks-as-attributes">26.5.2.4.将模拟作为属性附加</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-82"><a class="reference internal" href="unittest.mock.html#the-patchers">26.5.3.修补器</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-72"><a class="reference internal" href="unittest.mock.html#patch">26.5.3.1.补丁</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-73"><a class="reference internal" href="unittest.mock.html#patch-object">26.5.3.2. patch.object</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-74"><a class="reference internal" href="unittest.mock.html#patch-dict">26.5.3.3. patch.dict</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-75"><a class="reference internal" href="unittest.mock.html#patch-multiple">26.5.3.4. patch.multiple</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-76"><a class="reference internal" href="unittest.mock.html#patch-methods-start-and-stop">26.5.3.5.补丁方法:开始和停止</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-77"><a class="reference internal" href="unittest.mock.html#patch-builtins">26.5.3.6.补丁内置</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-78"><a class="reference internal" href="unittest.mock.html#test-prefix">26.5.3.7. TEST_PREFIX</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-79"><a class="reference internal" href="unittest.mock.html#nesting-patch-decorators">26.5.3.8.嵌套修饰符</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-80"><a class="reference internal" href="unittest.mock.html#where-to-patch">26.5.3.9.在哪里打补丁</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-81"><a class="reference internal" href="unittest.mock.html#patching-descriptors-and-proxy-objects">26.5.3.10.修补描述器和代理对象</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-85"><a class="reference internal" href="unittest.mock.html#magicmock-and-magic-method-support">26.5.4. MagicMock和魔法方法支持</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-83"><a class="reference internal" href="unittest.mock.html#mocking-magic-methods">26.5.4.1.嘲笑魔法方法</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-84"><a class="reference internal" href="unittest.mock.html#magic-mock">26.5.4.2.魔术模拟</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-94"><a class="reference internal" href="unittest.mock.html#helpers">26.5.5.助手</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-86"><a class="reference internal" href="unittest.mock.html#sentinel">26.5.5.1.哨兵</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-87"><a class="reference internal" href="unittest.mock.html#default">26.5.5.2. DEFAULT</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-88"><a class="reference internal" href="unittest.mock.html#call">26.5.5.3.调用</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-89"><a class="reference internal" href="unittest.mock.html#create-autospec">26.5.5.4. create_autospec</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-90"><a class="reference internal" href="unittest.mock.html#any">26.5.5.5. ANY</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-91"><a class="reference internal" href="unittest.mock.html#filter-dir">26.5.5.6. FILTER_DIR</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-92"><a class="reference internal" href="unittest.mock.html#mock-open">26.5.5.7. mock_open</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-93"><a class="reference internal" href="unittest.mock.html#autospeccing">26.5.5.8.自动指定</a></span></li></ul></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-121"><a class="reference internal" href="unittest.mock-examples.html">26.6. <code class="docutils literal"><span class="pre">unittest.mock</span></code> - 开始使用</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-105"><a class="reference internal" href="unittest.mock-examples.html#using-mock">26.6.1.使用Mock</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-96"><a class="reference internal" href="unittest.mock-examples.html#mock-patching-methods">26.6.1.1.模拟修补方法</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-97"><a class="reference internal" href="unittest.mock-examples.html#mock-for-method-calls-on-an-object">26.6.1.2.对对象的方法调用的模拟</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-98"><a class="reference internal" href="unittest.mock-examples.html#mocking-classes">26.6.1.3.模拟类</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-99"><a class="reference internal" href="unittest.mock-examples.html#naming-your-mocks">26.6.1.4.命名你的mocks</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-100"><a class="reference internal" href="unittest.mock-examples.html#tracking-all-calls">26.6.1.5.跟踪所有来电</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-101"><a class="reference internal" href="unittest.mock-examples.html#setting-return-values-and-attributes">26.6.1.6.设置返回值和属性</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-102"><a class="reference internal" href="unittest.mock-examples.html#raising-exceptions-with-mocks">26.6.1.7.使用mock提出例外</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-103"><a class="reference internal" href="unittest.mock-examples.html#side-effect-functions-and-iterables">26.6.1.8.副作用函数和迭代函数</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-104"><a class="reference internal" href="unittest.mock-examples.html#creating-a-mock-from-an-existing-object">26.6.1.9.从现有对象创建模拟</a></span></li></ul></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-106"><a class="reference internal" href="unittest.mock-examples.html#patch-decorators">26.6.2.修补程序</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-120"><a class="reference internal" href="unittest.mock-examples.html#further-examples">26.6.3.其他示例</a></span><ul><li class="toctree-l3"><span class="yiyi-st" id="yiyi-107"><a class="reference internal" href="unittest.mock-examples.html#mocking-chained-calls">26.6.3.1.模拟链接呼叫</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-108"><a class="reference internal" href="unittest.mock-examples.html#partial-mocking">26.6.3.2.部分模拟</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-109"><a class="reference internal" href="unittest.mock-examples.html#mocking-a-generator-method">26.6.3.3. Mocking a生成器Method</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-110"><a class="reference internal" href="unittest.mock-examples.html#applying-the-same-patch-to-every-test-method">26.6.3.4.对每个测试方法应用相同的补丁</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-111"><a class="reference internal" href="unittest.mock-examples.html#mocking-unbound-methods">26.6.3.5.模拟未绑定方法</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-112"><a class="reference internal" href="unittest.mock-examples.html#checking-multiple-calls-with-mock">26.6.3.6.使用模拟检查多个通话</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-113"><a class="reference internal" href="unittest.mock-examples.html#coping-with-mutable-arguments">26.6.3.7.处理可变参数</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-114"><a class="reference internal" href="unittest.mock-examples.html#nesting-patches">26.6.3.8.嵌套修补程序</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-115"><a class="reference internal" href="unittest.mock-examples.html#mocking-a-dictionary-with-magicmock">26.6.3.9.使用MagicMock嘲笑字典</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-116"><a class="reference internal" href="unittest.mock-examples.html#mock-subclasses-and-their-attributes">26.6.3.10. Mock子类及其属性</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-117"><a class="reference internal" href="unittest.mock-examples.html#mocking-imports-with-patch-dict">26.6.3.11. Mocking导入与patch.dict</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-118"><a class="reference internal" href="unittest.mock-examples.html#tracking-order-of-calls-and-less-verbose-call-assertions">26.6.3.12.跟踪呼叫顺序和较少详细的调用断言</a></span></li><li class="toctree-l3"><span class="yiyi-st" id="yiyi-119"><a class="reference internal" href="unittest.mock-examples.html#more-complex-argument-matching">26.6.3.13.更复杂的参数匹配</a></span></li></ul></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-125"><a class="reference internal" href="2to3.html">26.7. 2to3 - 自动Python 2到3代码翻译</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-122"><a class="reference internal" href="2to3.html#using-2to3">26.7.1.使用2to3</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-123"><a class="reference internal" href="2to3.html#fixers">26.7.2. Fixers</a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-124"><a class="reference internal" href="2to3.html#module-lib2to3">26.7.3. <code class="docutils literal"><span class="pre">lib2to3</span></code> - 2to3的库</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-128"><a class="reference internal" href="test.html">26.8. <code class="docutils literal"><span class="pre">test</span></code> - Python回归测试软件包</a></span><ul><li class="toctree-l2"><span class="yiyi-st" id="yiyi-126"><a class="reference internal" href="test.html#writing-unit-tests-for-the-test-package">26.8.1.写入单元测试<code class="docutils literal"><span class="pre">test</span></code></a></span></li><li class="toctree-l2"><span class="yiyi-st" id="yiyi-127"><a class="reference internal" href="test.html#running-tests-using-the-command-line-interface">26.8.2.使用命令行界面运行测试</a></span></li></ul></li><li class="toctree-l1"><span class="yiyi-st" id="yiyi-129"><a class="reference internal" href="test.html#module-test.support">26.9. <code class="docutils literal"><span class="pre">test.support</span></code> - Python测试套件的实用工具</a></span></li></ul></div></div></div> |