接口对象封装思想及实现-笔记

目录

  • 接口对象封装
    • 代码分层思想
  • 封装案例
    • 封装Tpshop商城登录
    • Tpshop商城登录参数化

接口对象封装

代码分层思想

在这里插入图片描述
分层思想:将普通思想分为两层,分为接口对象层和测试脚本层
接口对象层:
对接口进行封装,封装好之后,给测试用例调用
面向对象来封装实现
测试用例层:
调用接口对象层封装的方法,拿到响应结果,断言进行接口测试
借助unittest框架实现
封装思想:
将动态变化的数据,设计到方法的参数
将固定不变的,直接写成方法实现
将响应结果,通过返回值传出

封装案例

封装Tpshop商城登录

接口封装

class LoginApi:#发送验证码请求@classmethod      #类方法,不用创建实例,可直接类名调用def get_verify(cls,session):session.get(url='url地址')   #url地址是固定不变的#发送登录请求@classmethoddef post_login(cls,session,data):resp=session.post(url='url地址',data=data)return resp

断言封装

class AssertFeizhuang:def common_assert(self,resp,status_code,status,msg):self.assertEquel(status_code, resp.status_code)self.assertEquel(status, resp.json().get("status"))self.assertEqual(msg, resp.json().get("msg"))

用例优化(前置方法提取)

import unittest
from assert_feizhuang import AssertFeizhuang
from login_api import LoginApi
from assert_feizhuang import AssertFeizhuangclass TestLogin(unittest.TestCase):session=None@classmethoddef setUpClass(cls):cls.session = requests.session()def setUp(self):# 获取验证码LoginApi.get_verify(self.session)def test_login_01(self):"""登录成功"""#登录data={"username":"13800000002","password":"123456","verifyCode":"8888"}resp=LoginApi.post_login(self.session,data)#断言AssertFeizhuang.common_assert(self,resp,200,1,"登录成功")def test_login_02(self):"""手机号不存在"""# 登录data = {"username": "13800123002","password": "123456","verifyCode": "8888"}resp = LoginApi.post_login(self.session, data)# 断言AssertFeizhuang.common_assert(self, resp, 200, -1, "账号不存在")def test_login_03(self):"""密码错误"""# 登录data = {"username": "13800000002","password": "000000","verifyCode": "8888"}resp = LoginApi.post_login(self.session, data)# 断言AssertFeizhuang.common_assert(self, resp, 200, -1, "密码错误")

Tpshop商城登录参数化

参数化实现步骤:
1.导包from parameterized import parameterized
2.在需要参数的方法前一行添加@parameterized.expand(数据)
3.给expand()传入数据,数据格式[(),(),()]
4.修改需要参数的方法,添加形参,个数、顺序与传入数据()的所有key一一对应
5.在通用测试方法内,使用形参
json数据文件

[{"data": {"username":"13800000002","password":"123456","verifyCode":"8888"},"status_code": 200,"status": 1,"msg": "登录成功"
},{"data": {"username":"13800123002","password":"123456","verifyCode":"8888"},"status_code": 200,"status": -1,"msg": "账号不存在"
}, {"data": {"username":"13800000002","password":"000000","verifyCode":"8888"},"status_code": 200,"status": 1,"msg": "密码错误"}]

读取数据

import json
def get_data(file):with open(file,'r',encoding='utf-8') as f:list=json.load(f)list1=[]for i in list:list1.append(tuple(i.values()))return list1

参数化后用例

import unittest
import requests
from parameterized import parameterized
from get_data import get_data
from login_api import LoginApi
from assert_feizhuang import AssertFeizhuangclass TestLogin(unittest.TestCase):session=None@classmethoddef setUpClass(cls):cls.session = requests.Session()def setUp(self):# 获取验证码LoginApi.get_verify(self.session)@parameterized.expand(get_data('./login.json'))def test_login_01(self,data,status_code,status,msg):"""登录成功"""print(data,status_code,status,msg)#登录resp=LoginApi.post_login(self.session,data)#断言AssertFeizhuang.common_assert(self,resp,status_code,status,msg)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13355.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Javascript 日期计算如何实现当前日期加一天或者减去一天

• 1. Javascript 如何计算当前日期加一天或者减去一天的返回值 • 1.1. 加一天 • 1.2. 减一天 • 1.3. 解释 1. Javascript 如何计算当前日期加一天或者减去一天的返回值 在JavaScript中,可以通过Date对象来计算当前日期加一天或减去一天。 以下是一个简单的…

C_位运算符及其在单片机寄存器的操作

C语言的位运算符用于直接操作二进制位,本篇简单结束各个位运算符的作业及其在操作寄存器的应用场景。 一、位运算符的简单说明 1、按位与运算符(&) 功能:按位与运算符对两个操作数的每一位执行与操作。如果两个对应的二进制…

109,【1】攻防世界 web 题目名称-文件包含

进入靶场 直接显示源代码 提示我们通过get方式传递名为filename的参数,同时给出了文件名check.php filenamecheck.php 显示使用了正确的用法,错误的方法 filename./check.php 还是一样的回显 傻了,题目名称是文件包含,需要用到…

算法日记12:SC40树状数组(单点修改)

一、题目 二、题解: 2.1:题目的修改/查询交替进行,一眼就是树状数组的模板题目(当先修改最后查询可以使用前缀和/差分实现), 2.2:树状数组结构:每一个节点都有其管辖区间 2.2.1:lowbit()函数 : l o w b i…

6 加密技术与认证技术

6 加密技术与认证技术 6.1:对称加密与非对称加密技术 6.1.1:对称加密 对称加密:; 特点: 1、加密强度不高,但效率高;2、密钥分发困难。 常见对称密钥(共享秘钥)加密算法:DES、3DES(三重DES)、RC-5、IDEA算法。 6.1.1.2非对称加密技术 非对称…

安卓开发,Reason: java.net.SocketTimeoutException: Connect timed out

错误提示: Could not install Gradle distribution from https://services.gradle.org/distributions/gradle-8.9-bin.zip. Reason: java.net.SocketTimeoutException: Connect timed out 解决办法: 1、打开gradle\wrapper\gradle-wrapper.properties …

【Linux】24.进程间通信(3)

文章目录 3.6 systemv共享内存3.6.1 共享内存函数3.6.3 一个简单的共享内存代码实现3.6.4 一个复杂的共享内存代码实现3.6.4 key和shmid的主要区别: 3.7 systemv消息队列(了解)3.8 systemv信号量(了解)进程互斥四个问题理解信号量…

2.Mkdocs配置说明(mkdocs.yml)【最新版】

官方文件:Changing the colors - Material for MkDocs 建议详细学习一下上面的官方网站↑↑↑ 我把我目前的配置文件mkdocs.yml代码写在下面👇🏻 #[Info] site_name: Mkdocs教程 #your site name 显示在左上角 site_url: http://wcowin.wo…

AI大模型:本地部署deepseek

一、安装lmstudio 1、下载网站: LM Studio - Discover, download, and run local LLMs 2、直接安装即可,记住安装的路径 二、下载deepseek模型 2.1、下载的流程 1、下载网站 https://huggingface.co/models 2、在搜索框输入:deepseek …

解析PHP文件路径相关常量

PHP文件路径相关常量包括以下几个常量: __FILE__:表示当前文件的绝对路径,包括文件名。 __DIR__:表示当前文件所在的目录的绝对路径,不包括文件名。 dirname(__FILE__):等同于__DIR__,表示当前…

LLMs之data:synthetic-data-generator的简介、安装和使用方法、案例应用之详细攻略

LLMs之data:synthetic-data-generator的简介、安装和使用方法、案例应用之详细攻略 目录 synthetic-data-generator的简介 1、核心功能和优势 2、特点 synthetic-data-generator的安装和使用方法 1、安装 pip安装 安装依赖项 运行应用 2、使用方法 快速入…

Unity UI Default Shader分析

文章目录 UI默认材质和Default ShaderShader的属性定义Mask组件支持RectMask2D组件支持其他支持使用Unity UGUI时经常有自定义shader的需求,虽然我们可以直接按照shader lab的规范写出shader,使用也没问题,但如果能让自定义shader符合UI shader的规范,支持Mask,Rect2DMask…

【漫画机器学习】082.岭回归(或脊回归)中的α值(alpha in ridge regression)

岭回归(Ridge Regression)中的 α 值 岭回归(Ridge Regression)是一种 带有 L2​ 正则化 的线性回归方法,用于处理多重共线性(Multicollinearity)问题,提高模型的泛化能力。其中&am…

深入理解和使用定时线程池ScheduledThreadPoolExecutor

文章目录 前言认识定时线程池什么是定时线程池?定时线程池基本API使用定时线程池的应用场景1、定时任务调度2、缓存过期清理3、心跳检测4、延迟任务执行 定时线程池scheduleAtFixedRate与scheduleWithFixedDelay区别scheduleAtFixedRate案例demo(period&…

【React】合成事件语法

React 合成事件是 React 为了处理浏览器之间的事件差异而提供的一种跨浏览器的事件系统。它封装了原生的 DOM 事件,提供了一致的事件处理机制。 合成事件与原生事件的区别: 合成事件是 React 自己实现的,封装了原生事件。合成事件依然可以通…

中小企业的采购流程,采购管理是如何进行的?

经营中小企业的,都明白高效采购管理的重要性。我见过不少中小企业,采购环节混乱无序,花费大量成本,却难以保障物资的优质供应。然而到底该如何梳理采购流程,怎样开展采购管理工作呢?这让众多中小企业主愁眉…

在线教程丨YOLO系列10年更新11个版本,最新模型在目标检测多项任务中达SOTA

YOLO (You Only Look Once) 是计算机视觉领域中最具影响力的实时目标检测算法之一,以其高精度与高效性深受业界青睐,广泛应用于自动驾驶、安防监控、医疗影像等领域。 该模型最早于 2015 年由华盛顿大学研究生 Joseph Redmon 发布,开创了将目…

IOPS与吞吐量、读写块大小及延迟之间的关系

IOPS(每秒输入/输出操作次数)、吞吐量、读写块大小及延迟是衡量存储系统性能的四个关键指标,它们之间存在密切的关系。以下从多个方面详细说明这些指标之间的关系: 1. IOPS与吞吐量的关系 公式关系:吞吐量&#xff0…

DeepSeek 部署过程中的问题

文章目录 DeepSeek 部署过程中的问题一、部署扩展:docker 部署 DS1.1 部署1.2 可视化 二、问题三、GPU 设置3.1 ollama GPU 的支持情况3.2 更新 GPU 驱动3.3 安装 cuda3.4 下载 cuDNN3.5 配置环境变量 四、测试 DeepSeek 部署过程中的问题 Windows 中 利用 ollama 来…

DeepSeek RAGFlow构建本地知识库系统

学习目标 DeepSeek RAGFlow 构建本地知识库系统 学习内容 下载安装Docker 1.1 Docker 是什么 1.2 下载Docker 1.3 安装Docker配置DockerRAGFlow 配置 3.1 下载RAGFlow 3.2 RAGFlow配置 3.3 启动RAGFlow Docker新建知识库 4.1 查看本机IP 4.2 OLLAMA_HOST 变量配置 4.3 添加模…