1、前言
上一篇博客一起学习了测试套件(TestSuite),怎么将TestCase加载到TestSuite中介绍了四种方法,大家一定要掌握通过用例所在的路径进行加载。
2、TestFixture
2.1 简介
我们可以把TestFixture看作夹心饼干外层的两片饼干,这两片饼干就是setUp/tearDown,中间的奶油就是测试用例。除此之外,unittest还提供了更大范围的Fixture,如测试类、测试模块的Fixture。
2.2 使用
2.2.1 用例级别-setUp/tearDown
- 1、setUp : 测试用例开始前执行(以一条测试用例为单位)
- 2、tearDown :测试用例结束时执行(以一条测试用例为单位)
使用
# 测试用例开始前执行(以一条测试用例为单位)
def setUp(self) -> None:
print("test case start")
# 测试用例结束时执行(以一条测试用例为单位)
def tearDown(self) -> None:
print("test case end")
2.2.2 类级别-setUpClass/tearDownClass
- 1、setUpClass:测试用例类开始前执行
- 2、tearDownClass:测试用例类结束时执行
使用
# 测试用例类开始前执行
@classmethod
def setUpClass(cls) :
print("test class start")
# 测试用例类结束时执行
@classmethod
def tearDownClass(cls) :
print("test class end ")
2.2.3 模块级别-setUpModule/tearDownModule
- 1、setUpModule :整个模块开始前执行
- 2、tearDownModule:整个模块结束时执行
使用
# 整个模块开始前执行
def setUpModule():
print("test module start")
# 整个模块结束时执行
def tearDownModule():
print("test module end")
3、实例
import unittest
# 整个模块开始前执行
def setUpModule():
print("模块级别开始test module start")
# 整个模块结束时执行
def tearDownModule():
print("模块级别结束test module end")
class MyTest(unittest.TestCase):
# 测试用例类开始前执行
@classmethod
def setUpClass(cls) :
print("类级别开始 test class start" )
# 测试用例类结束时执行
@classmethod
def tearDownClass(cls) :
print("类级别结束 test class end")
# 测试用例开始前执行(以一条测试用例为单位)
def setUp(self) -> None:
print("用例级别开始 test case start")
# 测试用例结束时执行(以一条测试用例为单位)
def tearDown(self) -> None:
print("用例级别结束 test case end")
def test_case1(self):
print("用例 test case1")
def test_case2(self):
print("用例 test case2")
if __name__ == '__main__':
unittest.main()
4、输出结果
大家重点关注 执行的顺序,把顺序整清楚了,那么就明白测试脚手架是什么了!!
5、总结
- 1、setUpModule/tearDownModule:在整个模块的开始与结束时被执行。
- 2、setUpClass/tearDownClass :在测试类的开始与结束时被执行。
- 3、setUp/tearDown : 在测试用例的开始与结束被执行。
注意
- 4、setUpClass/tearDownClass 为类方法,需要通过@classmethod 进行装饰,另外方法的参数为cls,cls和self没有本质上的区别,都只表示方法的第一个参数。
- 5、使用场景,比如WEB自动化,浏览器初始化工作,可以使用。接口自动化需要登录的接口,然后拿到token等等令牌可以使用。
- 6、六个条件都是非必要条件,如果没有可以使用pass 占位符即可。
ps :
1、后续内容继续深入unittest的学习;
2、有什么问题,欢迎大家评论区评论交流!谢谢大家!
3、如果觉得博主这篇博客对大家有用,麻烦评论区留下自己的‘脚印’ !