Menu Close

Python单元测试框架

什么是单元测试?

使用Python进行单元测试可以在应用程序开发阶段的早期发现错误,因为这些错误的重复性较低且修复成本较低。

单元测试是用Python设计的脚本代码级测试,用于验证功能的一个小的“单元”。单元测试是基于测试装置的面向对象框架。

Python单元测试

Python单元测试主要涉及在不访问任何相关代码的情况下测试特定模块。开发人员可以使用stubs和mocks之类的技术将代码分成“单元”,并在各个部分上进行单元级测试。

  • 测试驱动开发TDD:单元测试应与Python一起完成,为此开发人员应使用测试驱动开发方法。在TDD方法中,您首先要设计Python单元测试,然后才继续编写将实现此功能的代码。
  • Stub和Mocks:它们是模拟正在测试的伪造方法的两种主要技术。stubs用于填充在能正常运行所需的单元测试一些依赖性。一个mocks的另一方面是它运行,我们把断言测试一个假的对象。

    两种方法的目的是相同的,以消除测试类或函数的所有依赖关系。

Python单元测试框架

为了简化单元测试过程并提高项目质量,建议使用Python单元测试框架。单元测试框架包括

PyUnit教程:通过示例学习Python单元测试框架

  • PyUnit: PyUnit支持fixture、测试用例、测试套件和一个用于代码自动测试的测试运行程序。在PyUnit中,您可以将测试用例组织到具有相同装置的套件中
  • nose:Nose的内置插件可以帮助您进行输出捕获、代码覆盖率、doctests等。Nose语法非常简单,并且减少了编写测试的障碍。它扩展了Python unittest以使测试更容易。
  • doctest: Doctest测试脚本放在docstring中,文件底部有一个小函数。Doctest允许您通过运行文档中包含的示例并验证它们是否返回了预期结果来测试代码。doctest的用例不太详细,并且不捕捉特殊情况。它们作为模块及其组件的主要用例的表达性文档非常有用。

使用PyUnit进行单元测试

Pyunit是JUnit的Python端口。作为Pyunit的一部分,在unittest模块中有五个关键类。

%title插图%num

 

  • TestCase类:TestCase类承担测试例程,并提供用于制作每个例程并随后进行清理的钩子
  • TestSuite类:作为收集容器,它可以拥有多个测试用例对象和多个测试套件对象
  • TestLoader类:此类加载本地定义或从外部文件定义的测试用例和套件。它发出一个拥有这些套件和案例的testsuite对象
  • TextTestRunner类:要运行测试,它会提供一个标准平台来执行测试
  • TestResults类:它提供用于测试结果的标准容器

使用PyUnit设计Python测试的测试用例

单元测试提供了一个基类,测试用例,可用于创建新的测试用例。为了设计测试用例,使用了三套方法:

%title插图%num

unittest.TestCase

setUp()
teardown()

skipTest(aMesg:string)
fail(aMesg:string)

id():string
shortDescription():string

第一组是测试前和测试后的钩子。setup()方法在每个测试例程之前开始,teardown()在例程之后开始。

第二套方法控制测试的执行。两种方法都将消息字符串作为输入,并且都取消正在进行的测试。但是skiptest()方法将中止当前测试,而fail()方法将其完全失败。

最后一种或第三种方法有助于确定测试。方法id()返回一个字符串,该字符串由测试用例对象和测试例程的名称组成。并且shortDescription()方法在每个测试例程启动时返回docstr注释。

使用Python单元测试的优势

  • 它可以帮助您在开发周期的早期发现错误
  • 它可以帮助您编写更好的程序
  • 它可以轻松与其他测试方法和工具同步
  • 它将减少许多错误
  • 将来修改起来更容易,而后果却很少
Posted in Python

发表评论

相关链接