python 接口数据驱动_python接口自动化9-ddt数据驱动

前言

ddt:数据驱动,说的简单一点,就是多组测试数据,比如点点点的时候登录输入正常、异常的数据进行登录。

实际项目中,自动化测试用得很少,但也有人用excel来维护测试数据

一、ddt

1、安装:pip install ddt (我这里已经安装过了)

C:\Users\Administrator>pip install ddt

Requirement already satisfied: ddtin d:\path_python\lib\site-packages (1.2.1)

2、先看下我们以前正常登录禅道的传参。登录需要账号与密码,现在只有一组数据,那么ddt就可以做到多组数据执行。(这里让你自己来)

# 登录

s=requests.session()

login_url= 'http://127.0.0.1/zentao/user-login.html'pr={'account': 'admin','password': '123456',

}

login_r= s.post(login_url, params=pr) # 传 params参数

# 断言是否登录成功

r1= s.get('http://127.0.0.1/zentao/doc-browse-1-byModule-0-id_desc-doc.html')if '产品主库' in r1.content.decode('utf-8'):

print('登录成功')else:print('登录失败')

1815594-20191208212047017-1670457656.png

3、需导入ddt、unittest。

①首先得有多组的数据来源(我写的是自己定义的一组json数据,也可以读取文件,喜欢就好!!!)

②测试类,需要加上装饰器:@ddt.ddt

③测试函数,也需要加上装饰器且传所有数据过来,*分别传全部数据:@ddt.data(*test_data)

④注意:用到ddt的多组数据传的是 data ,而不是 test_data,更不是 *test_data

import requests, ddt, unittest

# ddt数据驱动所需准备的数据

test_data=[

{'account': 'admin', 'pwd': '123465', 'exp': 'admin'},

{'account': 'gsxl', 'pwd': '123321', 'exp': 'gsxl'},

{'account': 'xxxx', 'pwd': '654321', 'exp': 'xxxx'}, ]

# 类需要ddt装饰器

@ddt.ddtclassTest_xl(unittest.TestCase):

def setUp(self):

self.s=requests.session()

self.s.verify=False

def tearDown(self):

self.s.close()

@ddt.data(*test_data) # 某个用例需要用到ddt的测试数据

def test_001(self, data):

print('ddt测试数据是:%s' %data)if __name__ == '__main__':

unittest.main() # 告诉解释器我是用unittest运行的!!!

1815594-20191208213757879-1077643772.png

4、怎样对应取到想要的值呢?这好比返回的是dict、list,那一样是可以取到的,不然就先学学基础数据结构的新删查改了。如下简单提取:

import requests, ddt, unittest

# ddt数据驱动所需准备的数据

test_data=[

{'account': 'admin', 'pwd': '123465', 'exp': 'admin'},

{'account': 'gsxl', 'pwd': '123321', 'exp': 'gsxl'},]

# 类需要ddt装饰器

@ddt.ddtclassTest_xl(unittest.TestCase):

def setUp(self):

self.s=requests.session()

self.s.verify=False

def tearDown(self):

self.s.close()

@ddt.data(*test_data) # 某个用例需要用到ddt的测试数据

def test_001(self, data):

# print('ddt测试数据是:%s' %data)

user= data['account']

pwd= data['pwd']

exp= data['exp']

print('这是账号:', user)

print('这是密码:', pwd)

print('这是期望结果:', exp)if __name__ == '__main__':

unittest.main() # 告诉解释器我是用unittest运行的!!!

1815594-20191208220000602-1985169098.png

如果想用excel维护测试用例、测试数据的同学那肯定要懂得使用 xlrd 这个模块了。

进行适配的二次封装,达到你想设计的自动化模式。欢迎来QQ交流群:482713805

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值