Unittest Framework 简明教程

UnitTest Framework - Framework

“unittest” 支持测试自动化、测试的设置和关闭代码共享、测试聚合到集合中以及将测试独立于报告框架。

unittest 模块提供了使为一组测试轻松支持这些质量的类。

为实现此目的,unittest 支持以下重要概念 −

  1. test fixture − 这表示执行一项或多项测试以及任何关联的清理操作所需的准备工作。例如,它可能涉及创建临时或代理数据库、目录或者启动服务器进程。

  2. test case − 这是测试的最小单元。它会检查针对特定的一组输入的特定响应。unittest 提供了一个基类 TestCase ,该类可以用于创建新的测试用例。

  3. test suite − 这是测试用例、测试套件或两者的集合。这用于聚合应该一起执行的测试。测试套件是由 TestSuite 类实现的。

  4. test runner − 这是一个对测试执行进行编排并且向用户提供结果的组件。运行程序可以使用图形界面、文本界面或返回一个特殊值以指示执行测试的结果。

Creating a Unit Test

编写一个简单单元测试涉及以下步骤 −

Step 1 − 在您的程序中导入 unittest 模块。

Step 2 − 定义要测试的函数。在以下示例中,add() 函数将受测试。

Step 3 − 通过继承 unittest.TestCase 创建一个测试用例。

Step 4 − 在类中将一个测试定义为方法。方法的名称必须以 “test” 开头。

Step 5 − 每个测试都会调用 TestCase 类的 assert 函数。有许多类型的断言。以下示例调用 assertEquals() 函数。

Step 6 − assertEquals() 函数将 add() 函数的结果与 arg2 参数进行比较,并且如果比较失败,则会引发 assertionError。

Step 7 − 最后,从 unittest 模块调用 main() 方法。

import unittest
def add(x,y):
   return x + y

class SimpleTest(unittest.TestCase):
   def testadd1(self):
      self.assertEquals(add(4,5),9)

if __name__ == '__main__':
   unittest.main()

Step 8 − 从命令行运行上述脚本。

C:\Python27>python SimpleTest.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK

Step 9 − 测试有以下三种可能的结果 −

Sr.No

Message & Description

1

OK 测试通过。在控制台上显示“A”。

2

FAIL 测试未通过,并引发 AssertionError 异常。在控制台上显示“F”。

3

ERROR 测试引发 AssertionError 以外的其他异常。在控制台上显示“E”。

这些结果分别在控制台上显示为“.”、“F”和“E”。

Command Line Interface

可以从命令行使用 unittest 模块运行单个或多个测试。

python -m unittest test1
python -m unittest test_module.TestClass
python -m unittest test_module.TestClass.test_method

unittest 支持以下命令行选项。要列出所有命令行选项,请使用以下命令

Python –m unittest -h

Sr.No

Option & Description

1

-h, --help Show this message

2

v, --verbose Verbose output

3

-q, --quiet Minimal output

4

-f, --failfast 在第一个失败时停止

5

-c, --catch 捕获 Ctrl-C 并在控制台上显示结果

6

-b, --buffer 在测试运行期间缓冲 stdout 和 stderr