本文介绍Unittest的概念以及基本使用方法
unittest是python自带的单元测试框架,有时候又被称为”PyUnit”,是 python版本的JUint实现。该框架的作者是 Kent Beck和Erich Gamma。
- 测试脚手架(test fixture)
- 负责准备工作,以及所有相关的清理操作。举个例子,这可能包含创建临时或代理的数据库、目录,再或者启动一个服务器进程。(撑起运行环境)
- 测试用例(test case)
- 测试套件(test suite)
- test suite 是一系列的测试用例,或测试套件,或两者皆有。它用于归档需要一起执行的测试。
- 测试运行器(test runner)
- test runner 是一个用于执行和输出测试结果的组件。这个运行器可能使用图形接口、文本接口,或返回一个特定的值表示运行测试的结果。
简单的例子
1 | import unittest |
推荐使用命令行运行:
简略模式:
1 | python -m unittest test.py |
更详细的信息:
1 | python -m unittest -v test.py |
探索性测试(运行时不含参数)
1 | python -m unittest |
1 | python -m unittest -v |
其它参数选项:
1 | -f 当出现第一个错误或者失败时,停止运行测试。 |
构建自己的测试代码
单元测试的构建单位是 test cases :独立的、包含执行条件与正确性检查的方案。在 unittest
中,测试用例表示为 unittest.TestCase
的实例。通过编写 TestCase
的子类或使用 FunctionTestCase
编写你自己的测试用例。
一个 TestCase
实例的测试代码必须是完全自含的,因此它可以独立运行,或与其它任意组合任意数量的测试用例一起运行。
1 | class TestAdd(unittest.TestCase): |
注意:
- 多个测试运行的顺序由内置字符串排序方法对测试名进行排序的结果决定。
- 若
setUp()
成功运行,无论测试方法是否成功,都会运行tearDown()
。
跳过测试与预计的失败
1 | @unittest.skip(reason) |