当前位置: 首页 > news >正文

【接口测试】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")

三、小结

http://www.jsqmd.com/news/173255/

相关文章:

  • 【毕业设计】基于SpringBoot的广西旅游景点数据分析系统与设计(源码+文档+远程调试,全bao定制等)
  • 技术人别再「埋头写代码」:一场好演讲,能让你的价值翻10倍
  • 工地目标检测数据集999张13种类别VOC+YOLO格式
  • 光量子计算机再达“量子优势”,意义何在?
  • Electron for 鸿蒙PC项目实战案例之水果消消乐 - 详解
  • HPE OneView高危漏洞CVE-2025-37164剖析:未经认证的远程代码执行
  • jQuery 杂项方法
  • 学长亲荐8个AI论文软件,助你轻松搞定本科论文!
  • C 标准库 - `<stdarg.h>`
  • 期货反向跟单—从小白到高手进阶历程 六十二(期货交易中的逆向智慧)
  • 【课程设计/毕业设计】基于SpringBoot的广西旅游景点数据分析系统与设计【附源码、数据库、万字文档】
  • 牙齿拥挤数据集3206张VOC+YOLO格式
  • 12月第三篇笔记
  • 5种学生行为检测数据集2262张VOC+YOLO格式
  • 盘点2025磁性材料/器件上市企业扩产投资动向
  • 12月读书笔记-3
  • 半导体行业2025年最便宜10款MCU芯片
  • Kafka Connect x AutoMQ: Zero Cross-AZ Data Pipeline
  • CSDN年度技术趋势预测文章大纲
  • [特殊字符] 庆祝 AutoMQ 在 GitHub 上突破 9k Stars!
  • 12款WebGIS 开发开源框架及性能
  • 私有部署问卷系统操作实战记录-DWSurvey
  • Day 51 在预训练 ResNet18 中注入
  • 拉链用一年就坏?一件好羽绒服的“隐形品质”,都藏在这三个细节里!
  • WebGIS开发智慧校园(1)GIS开发的基本概念
  • C#上位机大数据量处理:异步采集+多线程解析
  • 洞察趋势:低代码如何驱动企业数字化转型效率提升?
  • 西电考研 | 26官方复试专业课参考书目汇总,强烈推荐!
  • DeepSeek总结的SQL 数独:约束编程
  • Redis Cluster:从数据分布到故障转移的全方位解读