Python 带有两个测试框架。doctest
模块从模块的 docstring 中寻找示例并执行,对比输出是否与 docstring 中给出的是否一致。
unittest
模块是一个模仿 Java 和 Smalltalk 测试框架的更棒的测试框架。
为了使测试更容易,你应该在程序中使用良好的模块化设计。程序中的绝大多数功能都应该用函数或类方法封装 —— 有时这样做会有额外惊喜,程序会运行得更快(因为局部变量比全局变量访问要快)。除此之外,程序应该避免依赖可变的局部变量,这会使得测试困难许多。
程序的“全局主逻辑”应该尽量简单:
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
<span class="n">main_logic</span><span class="p">()</span>
www#gaodaima.com来源gaodai.ma#com搞##代!^码@网搞代码
并放置在程序主模块的最后面。
一旦你的程序已经用函数和类完善地组织起来,你就应该编写测试函数来测试其行为。可以使用自动执行一系列测试函数的测试集与每个模块进行关联。听起来似乎需要大量的工作,但是因为 Python 非常简洁和灵活,所以实际上会相当简单。在编写“生产代码”的同时别忘了也要编写测试函数,你会发现编程会变得更愉快、更有趣,因为这样会使得发现 bug 和设计缺陷更加容易。
程序主模块之外的其他“辅助模块”中可以增加自测试的入口。
<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">"__main__"</span><span class="p">:</span>
<span class="n">self_test</span><span class="p">()</span>
通过使用 Python 实现的“假”接口,即使是需要与复杂的外部接口交互的程序也可以在外部接口不可用时进行测试。
来源:搞代码网:原文地址:https://www.gaodaima.com