news 2026/1/25 23:15:13

【接口测试】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/1/24 20:33:14

牙齿拥挤数据集3206张VOC+YOLO格式

航拍挖掘机搅拌车起重机推土机等工地机械数据集927张VOCYOLO格式数据集格式:VOC格式YOLO格式压缩包内含:3个文件夹,分别存储图片、xml、txt文件JPEGImages文件夹中jpg图片总计:927Annotations文件夹中xml文件总计:927l…

作者头像 李华
网站建设 2026/1/25 21:46:58

DeepSeek总结的SQL 数独:约束编程

原文: SQL Sudoku Constraint Programming #1 SQL 数独:约束编程 CM Lubinski 考虑数独游戏,最常在九乘九的单元格网格上进行,其中每个单元格可以包含1到9的整数之一。游戏规定每一行必须只包含互不相同的元素,每一列以及九个三…

作者头像 李华
网站建设 2026/1/24 22:13:49

全面讲解并发编程模式,重点分析其在 .NET 中的实现

并发编程模式概述并发编程模式用于解决多线程环境下资源共享、任务协调和性能优化问题。常见模式包括锁机制、无锁编程、任务并行、数据并行等。锁机制模式锁机制通过同步原语控制线程访问共享资源。.NET 提供以下实现:Monitor 类:通过 lock 关键字实现临…

作者头像 李华
网站建设 2026/1/24 23:08:58

高频Robot Framework软件测试面试题

在软件测试的面试过程中,Robot Framework工具的相关知识,可以说是必考的了,下面为大家整理了一些高频Robot Framework面试题,拿走不谢~ 1、什么是 Robot Framework? Robot Framework是一款python编写的功能自动化测试…

作者头像 李华
网站建设 2026/1/24 20:36:19

计算机Java毕设实战-基于Springboot的牧场管理系统的设计与实现springboot的牧场信息化系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/1/25 23:10:46

CFD软件怎么选?实用选型指南——从需求匹配到工具价值的深度解析

在科研与工程领域,计算流体动力学(CFD)已成为“虚拟实验”的核心工具——从航空航天的气动外形优化,到新能源汽车的电池热管理,再到电子设备的散热设计,CFD通过数值模拟还原流体流动、传热、多相流等复杂物…

作者头像 李华