news 2026/5/1 8:45:32

【接口测试】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/4/13 19:42:06

工地目标检测数据集999张13种类别VOC+YOLO格式

工地目标检测数据集999张13种类别VOCYOLO格式数据集格式:VOC格式YOLO格式压缩包内含:3个文件夹,分别存储图片、xml、txt文件JPEGImages文件夹中jpg图片总计:999Annotations文件夹中xml文件总计:999labels文件夹中txt文…

作者头像 李华
网站建设 2026/4/25 1:29:29

半导体行业2025年最便宜10款MCU芯片

2025 年的半导体器件行业,尤其是 MCU芯片市场,正上演着一场没有硝烟的“价格绞杀战”。 图/AI生成 国内外MCU芯片厂商将这个曾被视为技术门槛的半导体器件硬生生拖入了“白菜价”的消费电子赛道。 从传统的8位机到先进的 32位 ARM、RISC-V 内核&#x…

作者头像 李华
网站建设 2026/5/1 8:35:57

Day 51 在预训练 ResNet18 中注入

预训练 ResNet18 模型注入方法在预训练的 ResNet18 模型中注入自定义模块或修改现有结构时,需确保不破坏原有特征提取能力。以下是常见注入方法:修改特定层结构 通过替换或扩展特定层(如卷积层、全连接层)实现功能注入。例如&…

作者头像 李华
网站建设 2026/4/23 18:22:07

Linux命令-ifconfig命令(配置和显示网络接口的信息)

🧭 说明 ifconfig 命令用于在 Linux 系统中配置和显示网络接口的信息。虽然现代系统更推荐使用 ip 命令,但 ifconfig 因其简单直观,仍在许多场景下被广泛使用。 下表汇总了 ifconfig 的核心功能。功能类别命令示例作用说明查看接口状态ifconf…

作者头像 李华
网站建设 2026/5/1 5:02:18

大数据存储引擎:行式存储的底层实现与高效查询方案

大数据存储引擎深度解析:行式存储的底层实现与高效查询优化方案 摘要/引言 想象一下:当你在电商平台下单时,系统需要快速记录你的订单ID、用户信息、商品列表、支付状态等整行数据;当你修改收货地址时,系统需要原子性地…

作者头像 李华
网站建设 2026/5/1 6:07:23

设置后台JOB

在程序中启用后台JOB如果是本程序,可以使用标准函数抓取CALL FUNCTION RS_REFRESH_FROM_SELECTOPTIONSEXPORTINGcurr_report sy-repidTABLESselection_table lt_sel_parameterEXCEPTIONSnot_found 1no_report 2OTHERS 3.下边是完整的…

作者头像 李华