自动化测试

本文介绍了Python的unittest模块,包括TestSuite和TestLoader的使用,测试用例的添加,fixture的概念和不同级别,以及断言方法。还提到了unittest的参数化扩展和跳过机制,并讲解了如何生成HTML测试报告。
摘要由CSDN通过智能技术生成
#实例化: #suite:TestSuite实例化的名称
suite = unittest.TestSuite()
#添加用例:#ClassName:类名,methodName:方法名
suite.addTest(ClassName(“methodName”))
suite.addTest([ClassName1(“methodName1”),ClassName2(“methodName2”)])

#添加扩展:#搜索指定Class内test开头的方法并添加到测试套件中
suite.addTest(unittest.makeSuite(ClassName))
#TestSuite需要配合TestRunner才能被执行

TestLoader与TestSuite区别

  1. TestSuite需手动添加测试用例,可以添加测试类,也可以添加测试类中某个方法
  2. TestLoader搜索指定目录下指定开头的.py文件,并添加测试类中的所有测试方法,不能指定添加测试方法

Test Fixture:

执行一个或多个测试所需的环境准备,以及关联的清理动作

eg. 创建临时或代理数据库、目录,或启动服务器进程

Fixture的控制级别

1.方法级别 def setUp() / def tearDown() #常用

特性:几个测试函数,执行几次,每个测试函数执行之前都会执行setUp,执行之后都会执行setDown

2.类级别 def setUpClass() / def tearDownClass() #常用

特性:测试类运行之前运行一次setUpClass类运行之后运行一次tearDownClass

注意:类方法必须使用@classmethod修饰

3.模块级别 def setUpModule() / def tearDownModule() #不常用

特性:模块运行之前执行一次setUpModule,运行之后运行一次tearDownModule

(1)导包import unittest

(2)新建测试类并继承unittest.TestCase

(3)测试方法必须以test字母开头

1.导包 import unittest


2.获取测试套件对象suite = unittest.TestSuite()**


3.调用addTest()方法,添加测试用例


suite.addTest(类名(“方法 suite.addTest(unittest.makeSuite(类名))

suite=unittest.TestLoader().discover(’…/cases’,pattern=’test*.py’)

defaultTestLoader

runner = unittest.TextTestRunner().runner.run(suite)


初始化结束执行

1.方法级别 def setUp() / def tearDown()

2.类级别 def setUpClass() / def tearDownClass()

3.模块级别 def setUpModule() / def tearDownModule()


. :一条运行**通过**的测试用例

F:一条运行失败的测试用例

s:一条运行跳过的测试用例

unittest默认根据ASCII码值顺序加载测试用例

(数字与字母的顺序为09,AZ,a~z)

不是按照测试用例的创建顺序从上到下执行


断言方法

self.assertEqual(a,b) #判断a==b

self.assertIn(a,b) #b是否包含a 注意:包含不能跳字符

self.assertTrue(a) #判断a是否为True

python 自带断言

assert a==b 

assert a in b 

assert True 


通过参数的方式来传递数据,从而实现数据和脚本的分离,并且可以实现用例的重复执行。

unittest框架,本身不支持参数化,但是可以通过安装unittest扩展插件parameterized实现

导包:from parameterized import parameterized

修饰测试函数 @parameterized.expend(列表型数据)


跳过:对于未完成的或者不满足测试条件的测试函数的测试类,可以跳过执行

使用方式:(可以修饰方法,也可以修饰类)

#直接将测试函数标记为跳过

@unittest.skip("代码未完成")

#根据条件判断测试函数是否跳过

@unittest.skipIf(condition,reason)


将HTMLTestRunner.py文件放到当前项目文件venv/Lib/site-packages中

HTML报告:根据TextTestRunner改编而来

操作:

1. 导包

from HTMLTestRunner import HTMLTestRunner


2. 定义测试套件

suite=unittest.TestLoader().discover(’../cases’,pattern=’test*.py’)


3.实例化HTMLTestRunner类,并调用run****方法执行测试套件

with open(报告存放路径,’wb’) as f:

注意生成html报告,必须使用wb,以二进制形式写入

实例化HTMLTestRunner类

HTMLTestRunner(stream=f).run(测试套件)

stream:文件流,打开写入报告的名称及写入编码格式)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值