从哪儿了解和学习 unittest 框架:
- 看官方文档(unittest --- 单元测试框架 — Python 3.11.8 文档),这个最重要!!!
- 选择你安装的 Python 的对应版本,而且有多种语言可选。
- 关于词语 “测试”。文档中经常用到“测试”一词,如执行一个“测试”。这里的测试是一个更加笼统的概念,即不特指为测试用例或测试方法。如你执行一个指定的测试用例,可以称之为一次测试,同样你执行一个指定的测试方法,也可以称之为一次测试。
unittest 在哪儿?
- 安装完 Python 后就自动拥有了 unittest,他在你 python 安装目录下的 Lib 子目录中,由十来个文件组成,见下图
- 中括号里面是该文件中的重要的类,包括其继承关系。当然对于学习和理解框架,红色的内容相对而言会更加重要。
unittest中的核心概念:
- 测试用例(TestCase)
- 一个测试用例是一个独立的测试单元。自己编写的测试用例需要继承自基类TestCase
- 一个测试用例中可以包含多个测试方法。每个测试方法可以完成一次独立的测试
- 对应的类是:TestCase
- 测试套件(TestSuite)
- 根据不同的测试目的将多个测试用例组织到一起,形成一个用例的集合,称之为测试套件。如冒烟测试套件、回归测试测试套件等
- 对应的类是:TestSuite
- 测试固件(TestFixture)
- 把带共性的前置和后置操作从测试代码中提出来。在运行测试时,测试框架会自动地为每个单独测试调用前置和后置的方法。这样的一个结构被称为测试固件(也可译为测试夹具、测试脚手架)
- 测试固件可以针对模块、类、方法分别实施初始化和清理工作
- 测试固件是一系列固定名称的方法,如setUp()、tearDown()、setUpClass()、tearDownClass() 等
- 测试加载器(TestLoader)
- 通过用户传入的测试名称、目录位置等寻找相应的测试,创建它们的实例,并添加到 测试套件(TestSuite) 中。
- 对应的类是:TestLoader
- 对应的加载方法是:loadTestsFromTestCase()、loadTestsFromModule()、loadTestsFromName()、loadTestsFromNames()、getTestCaseNames()
- 有一个特殊的加载方法,也叫探索性测试:discover(),可以搜索指定目录范围内的测试模块
- 测试运行器(TestRunner)
- 运行测试(测试模块、测试套、测试用例、测试方法等),输出测试结果(文本形式、HTML形式)
- 默认使用的类是 TextTestRunner,即文本形式的测试运行器
- 测试结果(TestResult)
- 用于测试结果的输出和显示
- 默认使用的类是 TextTestResult,即文本形式的测试结果输出,继承自TestResult 类
- 跳过测试(SkipTest)
- 可以通过 skip 装饰器跳过某些测试用例和测试方法
- 可用跳过装饰器包括:SkipTest、skip、 skipIf、skipUnless
【测试方法-测试用例-测试套件】之间的组织关系:
unittest 中的主要类和方法列表
在 ...\Python311\Lib\unittest\__init__.py 文件中,集中收集了主要的类和方法的列表,要查看对应的源码可以在这里通过 “Ctrl + 鼠标左键” 点击相应的名称。