接口自动化——请求参数

一、请求参数-params

1.1、请求参数params简介

案例: 'requests' 的搜索结果 - 测试人社区

  • 接口请求中携带的,会在路径之后使用?代表客户端向服务端传递的参数。
  • 使用 key=value 形式拼接在 URL 中。
  • 如果有多个,则使用&分隔

1.2、携带请求参数的方式

  • 常用两种方式:
    • 直接在 URL 中拼接:?username=Hogwarts&id=666
    • 通过 params 参数传递:requests.get(url, params)

1.3、示例

def test_get_by_params():
    # 定义接口的 url 和拼接在 url 中的请求参数
    url = "https://httpbin.ceshiren.com/get"
    params ={
        "get_key": "get_value"
    }
    # 发出 GET 请求,r 接收接口响应
    r = requests.get(url, params=params)


def test_get_by_url():
    # 定义接口的 url 和拼接在 url 中的请求参数
    url = "https://httpbin.ceshiren.com/get?get_key=get_value"
    # 发出 GET 请求,r 接收接口响应
    r = requests.get(url)

def test_post_by_params():
    # 定义接口的 url 和表单格式请求体
    url = "https://httpbin.ceshiren.com/post"
    params = {
        "post_key": "post_value"
    }
    # 发出 POST 请求,r 接收接口响应
    r = requests.post(url, params=params)

二、请求头信息-headers

2.1、请求头信息的使用场景

  • 身份认证
  • 指定数据类型

2.2、请求头信息

  • HTTP 请求头是在 HTTP 请求消息中包含的元数据信息,用于描述请求或响应的一些属性和特征。
  • 实际工作过程中具体要关注的头信息字段需要和研发沟通。

常见的头信息

内容 含义
authorization 表示客户端请求的身份验证信息
cookie 表示客户端的状态信息,通常用于身份验证和会话管理
content-type 表示请求消息体的mime类型
user-agent 发送请求的客户端软件信息

2.3、构造请求头

  • 使用headers参数传递
  • 通常使用字典格式
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)

三、请求体信息-body

3.1、接口请求体

  • 进行HTTP请求时,发送给服务器的数据。
  • 数据格式类型可以是JSON、XML、文本、图像等格式。
  • 请求体的格式和内容取决于服务器端API的设计和开发人员的要求。

3.2、常用接口请求体

类型 描述 content-type
JSON(JavaScript object notation) 轻量级的数据交换格式,最常见的一种类型 application/json
表单数据(form data) 以键值对的形式提交的数据 application/x-www-form-urlencoded
xml(extensible markup language) 常用的标记语言,常用于传递配置文件等数据 application/xmltext/xml
文件(file) 可以通过请求体上传文件数据,如图片、Excel。 上传文件的MIME类型,例如image/jpeg
纯文本(text) 纯文本数据,如发送邮件、消息等 text/plain
其他格式 二进制数据,protobuf等格式

3.3、JSON 格式请求体介绍

  • 是 JavaScript Object Notation 的缩写。
  • 是一种轻量级的数据交换格式。
  • 是理想的接口数据交换语言。
  • Content-Type 为 application/json。

3.3、构造 JSON 格式请求体

  • 定义为字典格式。
  • 使用 json 参数传入。
def test_post_json():
    # 定义接口的 url 和 json 格式请求体
    url = "https://httpbin.ceshiren.com/post"
    params = {
        "post_key": "post_value"
    }
    # 发出 POST 请求,r 接收接口响应
    r = requests.post(url, json=params)