news 2026/4/15 16:16:27

【接口测试】3_项目实战 _封装Tpshop商城登录接口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【接口测试】3_项目实战 _封装Tpshop商城登录接口

文章目录

  • 一、登录接口普通方式实现
  • 二、封装登录接口
    • 2.1登录接口对象层(重点)
      • 2.1.1 py02_tpshop_api.py
    • 2.2 登录接口测试用例层(重点)
      • 2.2.1 优化前
      • 2.2.2 优化后-定义setup方法
  • 三、小结

一、登录接口普通方式实现

importrequests# 创建 session对象session=requests.Session()# 发送 验证码请求 getsession.get(url="http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=verify&r=0.1858685996048326")# 发送 登录请求 postresp=session.post(url="http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login&t=0.11324043675270756",data={"username":"13812345678","password":"12345678","verify_code":"8888"})# 打印响应结果print("登录结果:",resp.json())

二、封装登录接口

2.1登录接口对象层(重点)

封装思想:

  • 将 普通方式实现代码中,固定不变的,直接写到方法的实现内部。
  • 将动态变化的,从参数传入。
  • 将响应结果,通过返回值 return

分析:

2.1.1 py02_tpshop_api.py

importrequests# 封装 tpshop 商城 接口对象层classTpshopLoginApi(object):# 获取验证码@classmethod# 装饰器defget_verify(cls,session):session.get(url="http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=verify")# 登录@classmethoddeflogin(cls,session,login_data):resp=session.post(url="http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login",data=login_data)returnresp# 返回的结果# 测试,自己封装的接口,功能是否正常!(自己测试使用)if__name__=='__main__':# 创建sessionsession=requests.Session()# 发送获取验证码请求TpshopLoginApi.get_verify(session)login_data={"username":"13812345678","password":"123456","verify_code":"8888"}# 发送登录请求,调完这个接口接收的response=TpshopLoginApi.login(session,login_data)print("登录结果:",response.json())

2.2 登录接口测试用例层(重点)

使用 接口测试框架 pytest调用自己封装的 Api,发送请求,获取响应结果,断言。完成接口测试!

  • 先定义测试类,以Test开头
  • 测试类里面有测试方法,以test开头
  • 测试方法里面完成断言方法编写

2.2.1 优化前

测试方法按照测试用例来写。

pycharm终端运行:pytest -s xx.py

importrequestsfrompy02_tpshop_apiimportTpshopLoginApiclassTestTpshopLogin(object):# 定义 测试方法 - 登录成功deftest01_login_success(self):# 创建 session 实例session=requests.Session()# 调用自己封装的API,发送 获取验证码 请求。(类名.方法名)TpshopLoginApi.get_verify(session)# 准备 请求体数据req_data={"username":"13812345678","password":"123456","verify_code":"8888"}# 调用自己封装的API,发送 登录 请求resp=TpshopLoginApi.login(session,req_data)# 打印响应结果print("登录成功:",resp.json())# 断言assert200==resp.status_codeassert1==resp.json().get("status")assert"登陆成功"inresp.json().get("msg")# 定义 测试方法 - 密码错误deftest02_pwd_err(self):# 创建 session 实例session=requests.Session()# 调用自己封装的API,发送 获取验证码 请求TpshopLoginApi.get_verify(session)# 准备 请求体数据req_data={"username":"13812345678","password":"12345689","verify_code":"8888"}# 调用自己封装的API,发送 登录 请求resp=TpshopLoginApi.login(session,req_data)# 打印响应结果print("密码错误:",resp.json())# 断言assert200==resp.status_codeassert-2==resp.json().get("status")assert"密码错误"inresp.json().get("msg")# 定义 测试方法 - 验证码错误deftest03_verify_err(self):# 创建 session 实例session=requests.Session()# 调用自己封装的API,发送 获取验证码 请求TpshopLoginApi.get_verify(session)# 准备 请求体数据req_data={"username":"13812345678","password":"123456","verify_code":"8976"}# 调用自己封装的API,发送 登录 请求resp=TpshopLoginApi.login(session,req_data)# 打印响应结果print("验证码错误:",resp.json())# 断言assert200==resp.status_codeassert0==resp.json().get("status")assert"验证码错误"inresp.json().get("msg")

2.2.2 优化后-定义setup方法

在执行每个方法之前,执行一遍setup定义的方法。

importrequestsfrompy02_tpshop_apiimportTpshopLoginApiclassTestTpshopLogin(object):# 定义为类属性。 使用时,类属性 可以用 类名、实例、self、cls 均可以引用session=Nonedefsetup(self):# 创建 session 实例self.session=requests.Session()# 调用自己封装的API,发送 获取验证码 请求TpshopLoginApi.get_verify(self.session)# 定义 测试方法 - 登录成功deftest01_login_success(self):# 准备 请求体数据req_data={"username":"13812345678","password":"123456","verify_code":"8888"}# 调用自己封装的API,发送 登录 请求resp=TpshopLoginApi.login(self.session,req_data)# 打印响应结果print("登录成功:",resp.json())# 断言assert200==resp.status_codeassert1==resp.json().get("status")assert"登陆成功"inresp.json().get("msg")# 定义 测试方法 - 密码错误deftest02_pwd_err(self):# 准备 请求体数据req_data={"username":"13812345678","password":"12345689","verify_code":"8888"}# 调用自己封装的API,发送 登录 请求resp=TpshopLoginApi.login(self.session,req_data)# 打印响应结果print("密码错误:",resp.json())# 断言assert200==resp.status_codeassert-2==resp.json().get("status")assert"密码错误"inresp.json().get("msg")# 定义 测试方法 - 验证码错误deftest03_verify_err(self):# 准备 请求体数据req_data={"username":"13812345678","password":"123456","verify_code":"8976"}# 调用自己封装的API,发送 登录 请求resp=TpshopLoginApi.login(self.session,req_data)# 打印响应结果print("验证码错误:",resp.json())# 断言assert200==resp.status_codeassert0==resp.json().get("status")assert"验证码错误"inresp.json().get("msg")

三、小结

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/23 5:53:34

【JetCompose】入门教程实战基础案例02之列表项显隐效果

子组件item预览 data class Message(val author: String, val body: String)Composable fun MessageCard(message:Message,modifier: Modifier ) {Box(modifier modifier.background(MaterialTheme.colorScheme.primary,// 全屏宽度shape MaterialTheme.shapes.medium).fill…

作者头像 李华
网站建设 2026/4/13 8:11:51

AI论文降重平台排名:9款工具实测,开题报告撰写功能同样出色

AI写论文平台排名:9个实测,开题报告论文降重都好用 工具对比排名表格 工具名称 核心功能 突出优势 Aibiye 降AIGC率 适配高校规则,AI痕迹弱化 Aicheck 论文降重 速度快,保留专业术语 Askpaper 论文降重 逻辑完整性好 …

作者头像 李华
网站建设 2026/4/15 4:04:24

基于腾讯元器搭建智能体“图片素材大师”Agent智能体搭建笔记

本文系统梳理基于腾讯元器平台构建“图片素材大师”智能体的全流程实操要点,涵盖前期需求锚定、核心功能搭建、图片检索工具集成、测试优化及运维保障等关键环节。该智能体采用单Agent架构开发,核心定位为“自然语言驱动的图像素材搜寻专家”&#xff0c…

作者头像 李华
网站建设 2026/4/15 4:51:26

【Kubernetes】K8s 1.35 配置 Docker 作为容器运行时

Kubernetes 1.24 移除了对 Docker 的直接支持,并且新版 K8s 主推更轻量的 Containerd,但 Docker 凭借其强大的生态依然是许多人的首选。本文将通过 cri-dockerd 这个 ‘适配器’,让 Kubernetes 中重新用上 Docker!操作系统&#x…

作者头像 李华
网站建设 2026/4/11 5:30:13

JAVA final 详解

1. 核心答案1.1 final方法可以重载吗?✅ 可以重载。final修饰的方法可以被重载。1.2 final方法可以重写吗?❌ 不能重写。final修饰的方法不能被重写(覆盖)。2. 详细解释2.1 为什么final方法可以被重载?重载&#xff08…

作者头像 李华
网站建设 2026/4/11 0:38:31

Java 线程生命周期详解

1. 线程状态概述Java 线程在其生命周期中有 6 种状态,定义在 java.lang.Thread.State 枚举中:public enum State {NEW, // 新建RUNNABLE, // 可运行BLOCKED, // 阻塞WAITING, // 等待TIMED_WAITING, // 计时等待TERMINATED …

作者头像 李华