接口测试Day10-测试数据封装(参数化-数据驱动)

  • Tpshop商城参数化
  • 准备工作
    分析 tpshop 商城测试用例:

    提取每个测试用例 使用的 测试数据 和 断言数据。

    封装函数,将 数据 转换为 元组列表。

参数化步骤

1、导包 from parameterized import parameterized

  1. 通用测试方法 ,上一行,添加 @parameterized.expand()

  2. expand() 传入 [(),(),()](调用 转换 [{},{},{}] --> [(),(),()] 的函数

  3. 修改 **通用测试方法,添加形参,**个数、顺序,与 [{},{},{}] 中 { } 内的所有 key 完全一一对应。

  4. 在 通用测试方法内,使用形参。

代码实现:

  • 整个代码结构
go 复制代码
import unittest

import requests
from objc import cls

from tpshop_login_api import TpShopLoginApi

from parameterized import parameterized


json_data = [
    {
        "req_boby": {"username": 13800138006, "password": 123456, "verify_code": None},
        "status_code": 200,
        "status": 1,
        "msg": "成功"
    },
    {
        "req_boby": {"username": 138002367612838, "password": 123456, "verify_code": None},
        "status_code": 200,
        "status": -1,
        "msg": "账号不存在!"
    },
    {
        "req_boby": {"username": 13800138006, "password": 123476, "verify_code": None},
        "status_code": 200,
        "status": -2,
        "msg": "密码错误"
    }
]

# 定义函数,读取 [{},{},{}] 转换成[(),(),()]
# 将 [{},{},{}]------>[(),(),()]
def read_json_data():
    list_data = []
    for item in json_data:
        # print(tuple(item.values()))
        list_data.append(tuple(item.values()))

    # 当循环结束后,list_data 为 [(),(),()] 数据
    # print(list_data)
    return  list_data

# 封装通用的 断言方法
def common_assert(self, resp, status_code, status, msg):
    # 断言
    self.assertEqual(status_code, resp.status_code)
    self.assertEqual(status, resp.json().get('status'))
    self.assertIn(msg, resp.json().get('msg'))

class TestTpShopLogin(unittest.TestCase):

    # 添加类属性
    session = None
    string_code = None

    # 所有方法前只需要创建一次session实例
    @classmethod
    def setUpClass(cls):
        # 创建session 实例
        cls.session = requests.Session()

    # 每个方法前每次都要调用一次获取验证码
    def setUp(self):
        # 调用自己封装的接口,获取验证码
        TpShopLoginApi.get_verify(self.session)

        # 定义一个变量去接受获取验证码 方法 返回的值
        self.string_code = TpShopLoginApi.get_verify(self.session)

    #  测试登录成功
    @parameterized.expand(read_json_data)
    def test01_login_ok(self, req_body, status_code, status, msg):

        # 调用自己封装的接口,登录
        req_body["verify_code"] = self.string_code
        resp = TpShopLoginApi.login(self.session, req_body)
        print('登录成功', resp.json())

        # 断言
        common_assert(self, resp, status_code, status, msg)
        # self.assertEqual(200, resp.status_code)
        # self.assertEqual(1, resp.json().get('status'))
        # self.assertIn('成功', resp.json().get('msg'))


    # 测试手机号不存在
    # def test02_tel_not_exists(self):
    #
    #
    #     # 调用自己封装的接口,登录
    #     login_data = {
    #         "username": 138002367612838,
    #         "password": 123456,
    #         "verify_code": self.string_code
    #     }
    #     resp = TpShopLoginApi.login(self.session, login_data)
    #     print('手机号不存在', resp.json())
    #
    #     # 断言
    #     common_assert(self, resp, 200, -1, '账号不存在!')
    #     # self.assertEqual(200, resp.status_code)
    #     # self.assertEqual(-1, resp.json().get('status'))
    #     # self.assertIn('账号不存在!', resp.json().get('msg'))
    #
    #  # 测试密码错误
    # def test03_pwd_err(self):
    #
    #     # 调用自己封装的接口,登录
    #     login_data = {
    #         "username": 13800138006,
    #         "password": 123476,
    #         "verify_code": self.string_code
    #     }
    #     resp = TpShopLoginApi.login(self.session, login_data)
    #     print('密码错误', resp.json())
    #
    #     # 断言
    #     common_assert(self, resp, 200, -2, '密码错误')
    #     # self.assertEqual(200, resp.status_code)
        # self.assertEqual(-2, resp.json().get('status'))
        # self.assertIn('密码错误', resp.json().get('msg'))
相关推荐
蹦蹦跳跳真可爱58919 分钟前
Python----Python高级(面向对象:对象,类,属性,方法)
开发语言·python
mnwl12_01 小时前
python轻量级框架-flask
开发语言·python·flask
张小特1 小时前
flask项目中使用schedule定时任务案例
后端·python·flask
gf13211111 小时前
python_在钉钉群@人员发送消息
android·python·钉钉
B站计算机毕业设计超人2 小时前
计算机毕业设计PySpark+Hadoop+Hive机票预测 飞机票航班数据分析可视化大屏 航班预测系统 机票爬虫 飞机票推荐系统 大数据毕业设计
大数据·hadoop·爬虫·python·spark·课程设计·数据可视化
xianfianpan2 小时前
史上最简单open-webui安装方式!!!
python·深度学习·神经网络·ai
deephub3 小时前
Python时间序列分析:使用TSFresh进行自动化特征提取
python·机器学习·时间序列·特征提取
brilliantgby3 小时前
蓝桥杯3527阶乘的和 | 组合数学
python·蓝桥杯
取个名字真难呐3 小时前
Conv2d中groups=2时手动计算及pytorch源码验证
人工智能·pytorch·python