前情提要“此文基于系列作品 Unittest自动化测试框架教程(一)——测试用例基本框架介绍 基础上编写,初学者访问此文建议快速浏览链接文章熟悉测试用例基本框架,高手可直接上手阅读 ~ “
PS:“ 学习能力强的朋友也可以通过前情提要快速了解框架 ”
- 博主每篇文章的注释都是干货!每个代码段都有详细注释,一定要认真看注释!!!
- 重要的事情说三遍:一定要看注释!!!一定要看注释!!!一定要看注释!!!
- 测试用例基本框架
import unittest
class BasicTestCase(unittest.TestCase): # 设置基础测试类名,继承库中测试用例的属性
# setUp()和tearDown()是每个测试用例进行时都会执行的测试方法,前者为起始,后者为结束
# 程序执行流程:setUp()-test1()-tearDown()---setUp()-test2()-tearDown()---
def setUp(self): # 复写父类的方法,是每一个测试用例都会执行的"起始方法"
pass # 自定义设置开始步骤
def tearDown(self): # 复写父类的方法,是每一个测试用例都会执行的"结束方法"
pass # 自定义设置结束步骤
def way(self): # 根据实际需求编写的测试方法
pass
def test1(self): # 设置测试用例1,命名为test+xxx,会按照test后的阿拉伯数字顺序执行,命名为testdemo也执行(优先级小于数字),总之,前缀带test的都会执行
pass # 执行程序+断言(自定义断言方法,灵活多变)
def test2(self): # 设置测试用例2
pass # 执行程序+断言(自定义断言方法,灵活多变)
if __name__ == '__main__': # 设定条件执行unittest的主函数
unittest.main() # 调用主函数进行多个测试用例测试!!!缺少则可能只进行最后一个用例测试
1.Fixture夹具的使用(unittest中的特殊类方法)
- 特殊类方法setUpClass(),tearDownClass(),在所有测试用例(整体)前后执行
- 作用,改变执行流程:
- setUpClass()---setUp()-test1()-tearDown()---setUp()-test1()-tearDown()---tearDownClass()
- 一定要认真看注释!!!
# 1.特殊类方法setUpClass(),tearDownClass(),在所有测试用例(整体)前后执行
# 1.作用,改变执行流程:setUpClass()---setUp()-test1()-tearDown()---setUp()-test1()-tearDown()---tearDownClass()
class BasicTestCase(unittest.TestCase):
@classmethod # 定义类方法
def setUpClass(cls): # 覆盖父类的类方法
pass
@classmethod # 定义类方法
def tearDownClass(cls): # 覆盖父类的类方法
pass
def setUp(self):
pass
def tearDown(self):
pass
def test1(self):
pass
def test2(self):
pass
if __name__ == '__main__': # 设定条件执行unittest的主函数
unittest.main()
2. Python关键知识(一)——为3.作铺垫
- 定义类属性,普通方法访问类属性需要通过类名访问,例如test1()中想要获取guide需要通过语句BasicTestCase.guide直接访问类属性
- 语法块中高亮是因为这是在方法中定义的类属性,代码未运行前无法识别,运行时无影响
- 注意与3.做比较
- 一定要认真看注释!!!
# 2.定义类属性,普通方法访问类属性需要通过类名访问,例如test1()中想要获取guide需要通过语句BasicTestCase.guide直接访问类属性
# 2.高亮是因为这是在方法中定义的类属性,代码未运行前无法识别
# 2.注意与3.做比较
class BasicTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.guide = 'yu' # 在类方法下,定义类属性cls.guide = 'yu'
pass
def test1(self): # 设置测试用例1
guide = BasicTestCase.guide # 获取类方法中的类属性,通过类名.类属性访问BasicTestCase.guide
if __name__ == '__main__': # 设定条件执行unittest的主函数
unittest.main()
3. Python关键知识(二)——为4.作铺垫
-
Python中的特性:如果实例没有相应属性,类属性有,则Python自动访问类属性替代
-
注意与4.作比较
-
一定要认真看注释!!!
# 3.Python中的特性:如果实例没有相应属性,类属性有,则Python自动访问类属性替代(注意与4.作比较)
class BasicTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.guide = 'yu' # 在类方法下,定义类属性cls.guide = 'yu'
pass
def test1(self):
guide = self.guide
# 3.在这段话中,这句话也可以获取guide = 'yu',因为语句虽然为self.guide,实例没有定义guide属性,
# 3.Python中的特性:如果实例没有属性,Python自动访问类属性替代
if __name__ == '__main__': # 设定条件执行unittest的主函数
unittest.main()
4.setUp定义全局实例属性——为5.作铺垫
-
在Unittest套件中,全局实例属性可以在setUp,tearDown中设置
- 注意和当局实例属性区分,与5.作比较
- 一定要认真看注释!!!
# 4.在Unittest套件中,全局实例属性可以在setUp,tearDown中设置,注意与5.做对比
class BasicTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.guide = 'yu' # 在类方法下,定义类属性cls.guide = 'yu'
pass
def setUp(self):
self.guide = 'ba' # 在setUp()方法下,定义 全局实例属性self.guide = 'ba'
def test1(self):
guide = self.guide # 3.在这段话中,这句话也获取guide = 'ba',因为实例在setUp中定义全局实例属性self.guide = 'ba'
if __name__ == '__main__': # 设定条件执行unittest的主函数
unittest.main()
5.当局实例属性与方法间参数依赖
- 普通方法(test1)只可定义"当局"实例属性,生命周期为本方法内,无法制造依赖关系
- 即普通方法test2无法使用test1中定义的实例属性
- 制造方法间依赖关系的手段:使用类属性在每一个方法里传参即可
- 一定要认真看注释!!!
# 5.普通方法只可定义"当局"实例属性,生命周期为本方法内,无法制造依赖关系
# 5.制造方法间依赖关系的手段:使用类属性在每一个方法里传参即可
class BasicTestCase(unittest.TestCase):
def setUp(self):
self.guide = 'ba' # 在setUp()方法下,定义"全局"实例属性self.guide = 'ba'
def test1(self):
guide = 'shi' # 在test1中定义"当局"实例属性guide = 'shi'
print(guide) # 这里拿到的guide = 'shi'
def test2(self):
guide = self.guide
print(guide) # 这里拿到的guide = 'ba',而不是'shi',说明普通方法中的实例变量生命周期仅限"当局",无法互相依赖
if __name__ == '__main__': # 设定条件执行unittest的主函数
unittest.main()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)