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

软件测试之接口测试,接口自动化测试, request

1. 接口测试

1.1 接口的概念

接口一般来说有两种:

  1. 程序内部的接口:方法与方法之间,模块与模块之间的交互
  2. 系统对外的接口:从别的网站或服务器获取资源或信息

1.2 接口测试

1.2.1 概念

接口测试是测试系统组件间接口的一种测试,主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。

1.2.2 接口组成

接口文档应包含:

  • 接口说明
  • 调用url
  • 请求方法(get/post)
  • 请求参数、参数类型、请求参数说明
  • 返回参数说明

1.3 接口测试重要性

必要性体现在:

  • 可以发现很多在页面上操作发现不了的bug
  • 检查系统的异常处理能力
  • 检查系统的安全性、稳定性
  • 前端随便变,接口测好了,后端不用变

1.4 接口用例的编写

  1. 通过性验证
  2. 参数组合测试
  3. 接口安全测试
  4. 异常验证

根据业务需求设计测试点,如登录失败次数限制、新用户发帖限制等。

2. 接口自动化测试

2.1 概念

通过对接口进行测试和模拟,确保软件系统内部各组件能正确通信和数据交换。

2.2 接口自动化流程

  1. 需求分析
  2. 挑选自动化接口
  3. 设计自动化测试用例
  4. 搭建自动化测试环境
  5. 设计自动化执行框架
  6. 编写代码
  7. 执行用例
  8. 生成测试报告

2.3 第一个简单的接口自动化

示例:对百度接口发起请求

import requests
r = requests.get("https://www.baidu.com")
print(r)

2.4 requests模块

2.4.1 安装
pip install requests==2.31.0
2.4.2 常见请求方法
# 发起get请求
requests.get(url, params=None, **kwargs)# 发起post请求
requests.post(url, data=None, json=None, **kwargs)# 通用请求方法
requests.request(method, url, **kwargs)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
<>表示打印对象

2.4.3 添加请求信息

在这里插入图片描述
get() 、 post() 底层都是调用 request() 方法,因此这三个方法在发送请求时,传参无太大区别,可传递的参数展示如下:
在这里插入图片描述

  1. 参数传递方式的区别
    • params

      • 用途:在URL中附加查询参数(Query Parameters)
      • 典型场景:主要用于GET请求,但也可用于其他请求方法
      • 示例
        requests.get(url, params={"key1": "value1"})  # 生成URL?key1=value1
        
    • json

      • 用途:在请求体(Body)中以JSON格式传输数据
      • 自动处理:设置Content-Type: application/json
      • 典型场景:POST/PUT请求的API交互
      • 示例
        requests.post(url, json={"key": "value"})  # 自动序列化为JSON
        

        若参数上传格式选择为 json 格式, Content-Type 会自动被设置为application/json

    • data

      • 用途:在请求体(Body)中以表单形式传输数据
      • 典型场景:传统表单提交或x-www-form-urlencoded格式
      • 示例
        requests.post(url, data={"key": "value"})  # Content-Type: application/x-www-form-urlencoded
        

示例:
json返回 带有参数,可以拼接,也可以传params
在这里插入图片描述

http://www.dtcms.com/a/331620.html

相关文章:

  • 【FreeRTOS】刨根问底4: 优先级反转是啥?咋解决?
  • 系统升级部署中的常见问题与解决方案
  • 京东比价项目开发实录:京东API接口(2025)
  • AI Agent 为什么需要记忆?
  • 我的 LeetCode 日记:Day 37 - 解锁动态规划:完全背包问题
  • 深度解析 Vue 高阶技巧:提升工程化能力的实用方案
  • 使用EvalScope对GPT-OSS-20B进行推理性能压测实战
  • Flink中的水位线
  • STL容器详解:Vector高效使用指南
  • 高效Unicode字符表示:一种创新的词表构建策略分析
  • MCP智能化问答系统实现方案
  • K8S企业级应用与DaemonSet实战解析
  • 【车联网kafka】用钟表齿轮理解 Kafka 时间轮​(第七篇)
  • Java应用快速部署Tomcat指南
  • # 2025全球AI游戏市场研究报告:行业洞察与未来趋势
  • OpenAI 的浏览器将使用 ChatGPT Agent 来控制浏览器
  • 亚马逊FCF计划:破解高单价产品转化困局的金融杠杆
  • RH134 管理基本存储知识点
  • 考研408《计算机组成原理》复习笔记,第四章(1)——指令系统概念(指令字长、N地址指令、定长和变长操作码)
  • H.264编码格式详解:Annex-B vs AVCC
  • 14、Docker Compose 安装 Redis 集群(三主三从)
  • 嵌入式学习笔记--MCU阶段--DAY12实时操作系统rt_thread1
  • Cypher注入详解:原理、类型与测试方法
  • 使用免费API开发口播数字人
  • 数智化与全球化,双轮驱动艾芬达持续引领行业变革
  • 嵌入式 - Linux软件编程:进程
  • PIDGenRc函数中lpstrRpc的由来和InitializePidVariables函数的关系
  • 什么是期权ETF分仓的意思呢?
  • 安全加固4(K8S最小化微服务安全)
  • java-JVM详解