news 2026/1/30 19:18:38

【接口测试】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/29 23:08:30

盘点2025磁性材料/器件上市企业扩产投资动向

2025年,磁性材料/器件上市企业的资本动作,正在从并购、扩产的“数量叠加”,转向更具指向性的设厂与设子公司布局。 无论是国内产能重构,还是海外工厂落子,这些看似分散的项目背后,实质上反映的是终端需求结…

作者头像 李华
网站建设 2026/1/30 4:23:49

腾讯智能工作台ima.copilot

链接:https://pan.quark.cn/s/91c09bbdfadd近期,腾讯的智能工作台——ima.copilot迎来了重大更新,正式接入了深度学习模型DeepSeek-R1。此举令用户在搜索、阅读、写作及知识库访问等功能上拥有了更多选择。自2024年10月推出以来,i…

作者头像 李华
网站建设 2026/1/16 14:12:10

【深入理解 Android 中的 build.gradle 文件】

一、什么是 build.gradle? build.gradle 是 Android 项目中最重要的配置文件之一,它基于 Gradle 构建系统,用于定义项目的构建配置、依赖管理和任务执行。每个 Android 项目都包含两种类型的 build.gradle 文件: 项目级&#xff0…

作者头像 李华
网站建设 2026/1/30 6:47:00

idea将配置移动到自定义位置

idea可以自定义配置文件的路径,这样比较便携系统配置:C:\Users\XXX\AppData\Local\JetBrains\IntelliJIdea2024.3 用户配置:C:\Users\XXX\AppData\Roaming\JetBrains\IntelliJIdea2024.3最后一个文件夹是idea的版本,基本上每次升级一个版本&a…

作者头像 李华