开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天,点击查看活动详情
您好,我是游手好闲的小羊!
一、回顾上一章,TestSuite 与TestLoader 区别
- TestSuite 需要手动添加测试用例(可以添加测试类,也可以添加测试类中某
- 个测试方法);
- TestLoader 搜索指定目录下指定开头.py 文件,并添加测试类中的所有的测试
- 方法,不能指定添加测试方法;
二、Fixture 介绍
说明:Fixture 是一个概述,对一个测试用例环境的初始化和销毁就是一个 Fixture 。
Fixture 控制级别:
- 方法级别;
- 类级别;
- 模块级别;
方法级别
使用:
- 初始化(前置处理): def setUp(self) --> 首先自动执行;
- 销毁(后置处理): def tearDown(self) --> 最后自动执行;
运行于测试方法的始末,即:运行一次测试方法就会运行一次setUp 和 tearDown
示例代码
# test01.py
import unittest
class my_test01(unittest.TestCase):
def setUp(self):
print("setUP 执行")
def tearDown(self):
print("teardown 执行")
def test_01(self):
print("my_test01 的test01")
def test_02(self):
print("my_test01 的test02")
类级别
使用:
- 初始化(前置处理): @classmethod def setUpClass(cls): --> 首先自动执行
- 销毁(后置处理): @classmethod def tearDownClass(cls): --> 最后自动执行
运行于测试类的始末, 即: 每个测试类只会运行一次setUpClass 和 tearDownClass
示例代码
# test01.py
# 导包
import unittest
class my_test01(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("setUPClass 执行")
@classmethod
def tearDownClass(cls):
print("tearDownClass 执行")
def setUp(self):
print("setUP 执行")
def tearDown(self):
print("teardown 执行")
def test_01(self):
print("my_test01 的test01")
def test_02(self):
print("my_test01 的test02")
模块级别
使用:
- 初始化(前置处理): def setUpModule() --> 首先自动执行
- 销毁(后置处理): def tearDownModule() --> 最后自动执行
运行于整个模块的始末,即:整个模块只会运行一次setUpModule 和tearDownModule
总结
- 必须继承unittest.TestCase 类,setUp、tearDown 才是一个Fixture;
- setUp,tearDown:如果一个类中有多个测试用例,每执行一个测试用例之 前会调用一次setUp,之后会调用一次tearDown;
- setUpClass,tearDownClass:如果一个类中有多个测试用例,执行所有测试 用例之前只会调用一次setUpClass,之后只会调用一次tearDownClass;
- setUpModule,tearDownModule:只在import 导入这个模块时会调用一次 setUpModule,模块使用完成之后会调用一次tearDownModule;
- setUpXXX:一般做初始化工作;
- tearDownXXX:一般做结束工作;
我是爱分享的小🐏!