unittest单元测试框架

python unittest单元测试框架

unittest单元测试框架的作用

unittest单元测试框架就是自动化测试中为了便于维护和管理测试用例的,能够生成测试报告和进行测试统计的一个框架
1.提供了测试用例的组织与执行
2.提供了丰富的断言方法
3.提供了丰富的日志信息

unittest单元测试框架的4个组件

1.测试用例

一个函数(必须以test为前缀命名,否则会被视为普通函数)就是一个测试用例

2.测试套件

一堆测试用例的集合

3.测试执行器

用来执行单元测试,并给出测试报告

4.测试固件

(1)setUp(self),每个测试用例执行前都会调用,在setUp(self)之前还可以添加一个类方法:

def setUpClass(cls):它会在所有用例前执行一次(也在setUp之前执行),不管有多少用例,都只执行一次,在这个类方法上必须添加装饰器@classmethod

(2)tearDown(self),每个测试用例执行完毕后都会调用,在teatDown(self)之前还可以添加一个类方法:

def teatDownClass(cls):它会在所有用例执行完毕后一次(也在tearDown之后执行),在这个类方法上必须添加装饰器@classmethod

如果没有setUpClass和tearDownClass,测试类中一般将setUp()和tearDown()写在第一,第二位,

如果有,那么类方法要写在前面,如图:

在这里插入图片描述

编写测试用例

普通类(要被测试的类):

在这里插入图片描述

再写测试用例的时候一般都是放在测试类中,如:

在这里插入图片描述

在这里插入图片描述

这里的TestCase类是所有测试类的基类,测试类都要继承这个类

注意基类中已有构造函数,这里不需要你写

测试用例(即以test为前缀命名的函数)一般不允许自定义参数

执行测试用例

执行测试用例一般有2种方法:

1.使用入口函数unittest.main()
2.

(1)另外建一个py文件

(2)在该文件中,使用unittest.TestSuite()新建测试套件

(3)用addTest()方法添加测试用例到套件,格式如上图

(4)使用unittest.TextTestRunner()安装测试执行器

(5)使用run()方法执行测试套件

ddt数据驱动

使多组数据可以在一个测试用例中使用

在这里插入图片描述

经过unpack解包的数据会被分开为多组,然后每一组数据有几个参数就相应传入用例中,

如果不给unpack,传入多组数据,会造成只将第一组数据整体传给用例的第一个参数,后面的参数会接收不到参数而报错(E),每有一组数据,会报错一次

@ddt.data(*a)

*表示可变参数,即可以传多个参数

@ddt.data(**a)
**表示关键字参数

makeSuite用法详解

makeSuite方法说白了就是将一个类中的所有测试用例打包成一个集合,它的参数就是类名

用法

1.作为TestSuite的参数
当作为TestSuite的参数时,意思就是说我makeSuite打包好的用例给TestSuite,让TestSuite用这些用例来生成套件(所以说此时的套件已经有了用例,不需要在用addTest来添加)

import unittest
class MyTest(unittest.TestCase):
	def test_01(self):
		print("111")
	def test_02(self):
		print("222")
t = unittest.makeSuite(MyTest)
#注意:上面一行就是将测试类MyTest中的所有用例打包
#(这里只是打包,还没有形成套件!!!)
suit = unittest.TestSuite(t)
#这一行才是将打完包的测试用例生成测试套件
#注意这个时候测试套件suit里面已经有了测试用例了,
#不需要通过addTest方法再添加用例了
my_run = unittest.TextTestRunner()#生成测试执行器
my_run.run(suit)#执行套件suit

2.作为addTest方法的参数
用makeSuite打包好的测试用例还是测试用例,放在addTest里面直接添加用例到套件就行了

import unittest
class MyTest(unittest.TestCase):
	def test_01(self):
		print("111")
	def test_02(self):
		print("222")
#当makeSuite作为addTest的参数时,那么我们就要先创建测试套件了
suit = unittest.TestSuite()#新建测试套件
suit.addTest(unittest.makeSuite(MyTest))
#上面就是添加测试用例,
#注意这里的用例是用makeSuite打包的测试类MyTest的所有用例
myrun = unittest.TextTestRunner()
myrun.run(suit)

注:
python3中已经没有makeSuite了,被以下方法替换了
以前是:
suite = unittest.TestSuite(unittest.makeSuite(MyTest))
python3中是:
suite = unittest.TestSuite(unittest.TestLoader().loadTestsFromTestCase(MyTest))

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值