# unittest概述
# 主要组件
unittest框架是python内置模块,只要用于组织和运行单元测试,其主要组件如下:
TestCase- 即测试用例,
unittest中提供了一个基本类TestCase,可以用来创建新的测试用例 - 提供了一系列的
assert方法用来检查运行结果
- 即测试用例,
TestLoader- 用于从包中提取
TestCase用例加入到TestSuite中 - 有
loadTestsFromModule和loadTestsFromTestCase等不同细粒度的收集方法
- 用于从包中提取
TestSuite-
TestSuite是TestCase或TestSuite的容器 -
TestSuite按照加入的顺序执行测试用例
-
TestRunner- 执行测试套件中的测试用例,并返回测试用例执行结果
TextTestRunner- 执行测试套件中的测试用例,并将测试结果用Text的形式进行展示
TestResult- 储存测试用例执行结果的基类
TestFixture- 测试夹具,用于测试用例环境的搭建和销毁,即用例测试前准备环境的搭建(SetUp前置条件),测试后环境的还原(TearDown后置条件)
- 有两种使用方式,一种是以测试方法为维度的
setUp()和tearDown(),一种是以测试类为维度的setUpClass()和tearDownClass()
执行流程为:
写好TestCase
由TestLoader加载TestCase到TestSuite
由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,我们通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者我们可以直接通过TextTestRunner来执行用例。
在Runner执行时,默认将执行结果输出到控制台,我们可以设置其输出到文件,在文件中查看结果。
# 单测编写流程
- 编写一个
python类,继承TestCase类,即一个测试类 - 定义
setUp和tearDown,如果定义了则会在每个测试case执行前先执行setUp方法,执行完毕后执行tearDown方法,主要是用作测试环境的船舰和销毁。 - 在测试类中编写以
test开头的测试方法(测试用例),unittest会自动将test开头的方法放入测试用例集中。 - 执行
unittest.main(),该函数会负责运行测试,它会实例化所有TestCase的子类,并运行其中所有以test打头的方法。
# 总结
unittest是Python自带的单元测试框架,我们可以用其来作为我们自动化测试框架的用例组织执行框架。
unittest的流程:写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner来运行TestSuite,运行的结果保存在TextTestResult中,我们通过命令行或者unittest.main()执行时,main会调用TextTestRunner中的run来执行,或者我们可以直接通过TextTestRunner来执行用例。一个class继承unittest.TestCase即是一个TestCase,其中以
test开头的方法在load时被加载为一个真正的TestCase。
verbosity参数可以控制执行结果的输出,0 是简单报告、1 是一般报告、2 是详细报告。可以通过
addTest和addTests向suite中添加case或suite,可以用TestLoader的loadTestsFrom__()方法。用
setUp()、tearDown()、setUpClass()以及tearDownClass()可以在用例执行前布置环境,以及在用例执行后清理环境我们可以通过skip,skipIf,skipUnless装饰器跳过某个case,或者用TestCase.skipTest方法。
参数中加stream,可以将报告输出到文件:可以用TextTestRunner输出txt报告,以及可以用HTMLTestRunner输出html报告。
unittest是Python自带的单元测试框架,我们可以用其来作为我们自动化测试框架的用例组织执行框架。
← unittest文档 argparse →