数据驱动ddt详解

数据驱动ddt

数据驱动ddt可以实现测试数据与测试脚本的分离,通过ddt来将测试数据加载到脚本中。采用数据驱动设计模式使一组数据对应一个测试用例,用例自动加载生成
在执行测试用例时,有些用例只是参数不一致。比如登录操作。
如果用例重复去写操作过程会增加代码量
对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成

ddt基础

  1. 安装ddt
pip install ddt
  1. 测试数据为多个字典的list类型
  2. 测试类前加修饰@ddt.ddt
  3. 测试用例前加修饰@ddt.data()
  4. 运行后用例会自动加载成三个单独的用例
#coding:utf-8
import ddt
import unittest

testdata = [{"username":"wangm","password":1234567},
            {"username":"WXK","password":1234567},
            {"username":"Wyyy","password":1234567},
            {"username":"WANGMIN","password":1234567}]

@ddt.ddt
class Test(unittest.TestCase):
    def setUp(self):
        print("开始")

    def tearDown(self):
        print("结束")

    @ddt.data(*testdata)
    def test_ddt(self,data):
        print(data)


if __name__ =="__main__":
    unittest.main()

在这里插入图片描述

unittest结合ddt数据驱动

#coding:utf-8
import requests
import unittest
import ddt
from login import get_login


testdata = [{"username": "wangm", "password": 1234567, "token":get_login()},
            {"username": "wangm", "password": 123, "token":get_login()},
            {"username": "wang", "password": 1234567,"token":get_login(),},
             {"username":"xiaohong","password":123,"token":get_login()},
            {"username":"admin","password":123454321,"token":get_login()}
            ]


@ddt.ddt
class post_request(unittest.TestCase):

    def setUp(self):
        print("开始")
        self.post_url = ''
        self.header = {
            "Accept": "application/json, text/plain, */*",
            "Accept - Encoding": "gzip, deflate",
            "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
            "Cookie": "Hm_lvt_d93b15658f1430688541cac7600553c6 = 1614989285, 1615162008, 1615247795, 1615365764;Hm_lpvt_d93b15658f1430688541cac7600553c6 = 1615366477"

        }

    @ddt.data(*testdata)
    def test_post_DL(self,data1):
        url = self.post_url
        header = self.header
        data = data1
        r =requests.post(url=url,headers=header,data=data)
        print(r.status_code)
        print(r.text)

    def tearDown(self):
        print("结束")
        pass


if __name__ =="__main__":
    unittest.main()

使用json或yaml文件

    @ddt.file_data('C:\\Users\\Kst\\PycharmProjects\\接口自动化\\test_case\\DLL.json')
    @ddt.unpack
    def test_01_DLL(self,a):
        url = self.url
        header = self.header
        data = a
        r = requests.post(url=url,headers=header,data=data)

        print(r.status_code)
        print(r.text)
[{"username": "wangm", "password": 1234567, "token": "81e3ae48fdc7422cb1bfea6700c084c3000000001386"},
  {"username": "wangm", "password": 123, "token": "81e3ae48fdc7422cb1bfea6700c084c3000000001386"},
  {"username": "wang", "password": 1234567, "token": "81e3ae48fdc7422cb1bfea6700c084c3000000001386"},
  {"username": "xiaohong", "password": 123, "token": "81e3ae48fdc7422cb1bfea6700c084c3000000001386"},
  {"username": "admin", "password": 123454321, "token": "81e3ae48fdc7422cb1bfea6700c084c3000000001386"}]
  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪敏wangmin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值