首页 > 编程语言 > 详细

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

时间:2019-12-10 01:42:56      阅读:112      评论:0      收藏:0      [点我收藏+]

前言

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

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

一、ddt

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

C:\Users\Administrator>pip install ddt
Requirement already satisfied: ddt in 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(登录失败)

技术分享图片

 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.ddt
class Test_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运行的!!!

技术分享图片

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

import requests, ddt, unittest

# ddt数据驱动所需准备的数据
test_data = [
    {account: admin, pwd: 123465, exp: admin},
    {account: gsxl, pwd: 123321, exp: gsxl},]

# 类需要ddt装饰器
@ddt.ddt
class Test_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运行的!!!

技术分享图片

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

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

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

原文:https://www.cnblogs.com/gsxl/p/11964182.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!