'unittest'支持测试自动化,共享测试的设置和关闭代码,将测试聚合到集合中,以及测试与报告框架的独立性.
unittest模块提供在一组测试中,这些类很容易支持这些特性.
为实现这一目标,unittest支持以下重要概念 :
测试夹具 : 这表示执行一个或多个测试以及任何关联清理操作所需的准备工作.例如,这可能涉及创建临时或代理数据库,目录或启动服务器进程.
测试用例 : 这是最小的测试单位.这将检查对特定输入集的特定响应. unittest提供了一个基类 TestCase ,可用于创建新的测试用例.
测试套件 : 这是测试用例,测试套件或两者的集合.这用于聚合应该一起执行的测试.测试套件由TestSuite类实现.
测试运行器 : 这是一个组件,它协调测试的执行并向用户提供结果.跑步者可以使用图形界面,文本界面或返回特殊值来指示执行测试的结果.
创建单元测试
以下步骤涉及编写简单的单元测试 :
步骤1 : 在程序中导入unittest模块.
第2步 : 定义要测试的功能.在以下示例中,add()函数将进行测试.
步骤3 : 通过继承unittest.TestCase创建一个测试用例.
步骤4 : 将测试定义为类中的方法.方法名称必须以'test'开头.
第5步 : 每个测试都调用TestCase类的断言函数.有许多类型的断言.下面的示例调用assertEquals()函数.
步骤6 : assertEquals()函数将add()函数的结果与arg2参数进行比较,如果比较失败则抛出assertionError.
步骤7 : 最后,从unittest模块调用main()方法.
import unittestdef add(x,y): return x + y class SimpleTest(unittest.TestCase): def testadd1(self): self.assertEquals(add(4,5),9) if __name__ == '__main__': unittest.main()
第8步 : 从命令行运行上面的脚本.
C:\Python27> python SimpleTest.py . ---------------------------------------------- ------------------------ 在0.000秒内完成1测试 OK
第9步 : 以下三个可能是测试的可能结果 :
Sr.No | 消息&描述 |
---|---|
1 | 确定 测试通过.控制台上显示"A". |
2 | 失败 测试未通过,并引发AssertionError异常. 'F'显示在控制台上. |
3 | 错误 测试引发AssertionError以外的异常.控制台上显示"E". |
这些结果通过"."显示在控制台上. ,'F'和'E'分别.
命令行界面
可以从命令行使用unittest模块运行单个或多个测试.
python -m unittest test1python -m unittest test_module.TestClasspython -m unittest test_module.TestClass.test_method
unittest支持以下命令行选项.有关所有命令行选项的列表,请使用以下命令 :
Python –m unittest -h
Sr.No | 选项&描述 |
---|---|
1 | -h, --help 显示此消息 |
2 | v, --verbose 详细输出 |
3 | -q, --quiet 最小输出 |
4 | -f, --failfast 第一次失败时停止 |
5 | -c, --catch Catch控件-C并显示结果 |
6 | -b, --buffer 缓冲区标准输出和测试运行期间的stderr |