python用例和数据的分离处理之DDT数据驱动测试

DDT 【data driver test 数据驱动测试】


一、先安装 ddt 模块:

  • 方法一:可以直接 cmd 命令行敲: pip install ddt 【pip行不通试试 pip3 / pip.exe 安装】

  • 方法二:按照下面的GIF图片,在pycharm直接安装

二、ddt 简单使用

  • 先导入 ddt 模块: import ddt

  • class类上方输入: @ddt.ddt 【装饰器,固定语法,无需深究】

  • 函数方法上方输入: @ddt.data( )

  • ↑ ↑ ↑ 【括号传参,传几个参数就生成几条测试用例】

# -*- -*- -*-  -*-  -*-  -*-  -*-  -*-  
# -*- coding: utf-8 -*-                                         
#  @Time   : 2020/08/01
#  @File    : ddt_test.py
# -*- -*- -*-  -*-  -*-  -*-  -*-  -*-
import unittest
# 先导入 ddt 模块
import ddt


# 固定语法,无需深究
@ddt.ddt
class TestMethod(unittest.TestCase):
    # @ddt.data(括号中写参数,有几个参数,就生成多少条测试用例)
    @ddt.data(1,2,3,4)
    # case为形参,用于接收数据
    def test_001(self,case):
        print("测试用例,第{}条".format(case))


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

main方法输入测试结果:python用例和数据的分离处理之DDT数据驱动测试_第1张图片

三、ddt 在用例中的使用

1. 封装一个类方法

# -*- -*- -*-  -*-  -*-  -*-  -*-  -*-  
# -*- coding: utf-8 -*-                                         
#  @Time   : 2020/08/01
#  @File    : D:\PyCharm_Community\DDT\test_login.py
# -*- -*- -*-  -*-  -*-  -*-  -*-  -*-

'''封装一个类方法'''
import requests


class Login():
    def __init__(self,userName,password):
        self.userName = userName
        self.password = password

    def login(self):
        url = 'http://182.92.197.48:8088/api/user/login'
        json = {"userName": self.userName, "password": self.password, "remember": False}
        header = {"user-Agent": "Mozilla/5.0", "Content-Type": "application/json"}
        res = requests.post(url, headers=header, json=json)
        print(res.json())
        return res.json()


Login("xzsks001","123456").login()

2. 准备变量参数数据 , 使用 ddt 分离数据

# -*- -*- -*-  -*-  -*-  -*-  -*-  -*-  
# -*- coding: utf-8 -*-                                         
#  @Time   : 2020/08/01
#  @File    : D:\PyCharm_Community\DDT\ddt_test.py
# -*- -*- -*-  -*-  -*-  -*-  -*-  -*-
import unittest
# 导入 ddt 模块
import ddt
from DDT.test_login import Login

data_info = [   {"params":("xzsks001","123456"),"excepted":{'code': 1, 'message': '成功'}},
                {"params":("xzsks","123456"),"excepted":{'code': 402, 'message': '用户名或密码错误', 'response': None}},
                {"params":("zhangsan","123"),"excepted":{'code': 402, 'message': '用户名或密码错误', 'response': None}}]


# 固定语法,无需深究
@ddt.ddt
class TestMethod(unittest.TestCase):
    # @ddt.data(括号中写参数,有几个参数,就生成多少条测试用例)
    @ddt.data(*data_info)
    # case为形参,用于接收数据,dict类型
    def test_001(self,case):
        # 预期结果为 case的excepted的属性值
        excepted = case["excepted"]
        # 传入参数为 case的params的属性值
        params = case["params"]
        # 调用被测函数,传入参数,获取实际结果
        result = Login(*params).login()
        # 比对预期与实际结果是否一致
        self.assertEqual(excepted,result)

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

3.执行结果,生成测试报告

python用例和数据的分离处理之DDT数据驱动测试_第2张图片

你可能感兴趣的:(python自学笔记,Pycharm)