Python requests库接口测试实战:GET/POST参数与响应处理详解

江岸
江岸
发布时间:2026-10-14 | 6人浏览过
原创

本文详细介绍Python中requests库进行接口测试的核心用法。涵盖GET与POST请求的参数传递方式,重点解析params、data与json三者的区别及适用场景。同时讲解如何利用requests.Session()保持会话状态,并演示如何获取状态码、响应头、编码格式及JSON数据等关键响应信息,帮助开发者快速掌握接口自动化测试基础。

GET请求参数传递与实现

在接口测试中,GET方法是获取资源的基础方式。

首先需要明确接口的完整URL地址,这是请求的目标路径。

其次需配置请求头(headers),例如指定内容类型为application/x-www-form-urlencoded,以告知服务器数据格式。

通过params参数传递GET请求所需的查询参数,Python中通常使用字典格式(key-value)来组织这些参数。

具体实现代码如下所示:


import requests
url="http://api.shein.com/login"
header={"content-type":"application/x-www-form-urlencoded"}
param={"user_id":123456,"email":"123456@163.com"}
timeout=0.5
response = requests.get(url, headers=header, params=param, timeout=timeout)
# response = requests.request("get",url,headers=header,params=body,timeout=timeout)
print (response.text)

POST请求与Session会话管理

与GET不同,POST方法常用于提交数据。


import requests

url="http://api.shein.com/login"

header={"content-type":"application/x-www-form-urlencoded"}

param={"user_id":123456,"email":"123456@163.com"}

timeout=0.5

response = requests.post(url, headers=header, data=param, timeout=timeout)

# response = requests.request("post",url,headers=header,data=param,timeout=timeout)

print (response.text)

import requests

url = "https://apipc.xinqgj.com/user/login"
payload = {"phone":"17779828887","pwd":"Ty+coun/mUj1saGV2OCK6p5kN9MNt8Uznj"}
headers = {'Content-Type': 'application/json'}

response = requests.request("POST", url, headers=headers, json = payload)
print(response.text)

以下是使用Session对象进行接口请求的示例,适用于需要保持登录状态或多步操作的场景。


import requests

session = requests.Session()  #定义全局session,通过 session 保持会话
class Cms():

  def login(self):
    url = "http://192.168.1.110:8080/cms/manage/loginJump.do"
    header = {"Content-Type": "application/x-www-form-urlencoded"}
    parmas = {"userAccount": "admin", "loginPwd": "123456"}
    #通过全局 session 请求接口
    res = session.post(url=url, headers=header, data=parmas)
    print(res.json())

  def queryUserList(self):
    url = "http://192.168.1.110:8080/cms/manage/queryUserList.do"
    header = {"Content-Type": "application/x-www-form-urlencoded"}
    parmas = {"startCreateDate":"",
         "endCreateDate":"",
         "searchValue":"",
         "page":"1"}
    # 通过全局 session 请求接口
    res = session.post(url=url, headers=header, data=parmas)
    print(res.json())

if __name__ == '__main__':
  Cms().login()
  Cms().queryUserList()

params、data与json参数区别解析

在使用requests模块时,需特别注意params、data和json三个参数在报文提交时的区别。

  • requests模块支持三种携带参数的方法:data、json和params。
  • 总结而言,params适用于GET请求,而data和json主要用于POST请求。
    • 对于常见的form表单提交,可直接使用data参数,其值应为Python字典类型。
    • 若接口接收的是JSON格式数据,则应直接使用json参数进行报文提交,无需手动序列化。

接口响应信息与状态码处理

获取接口返回结果后,可对响应对象进行多种操作以提取所需信息。

使用text属性可直接获取接口返回的原始文本内容。

调用json()方法可将返回的JSON字符串解析为Python字典对象,便于后续处理。

通过status_code属性可获取HTTP状态码,通常200表示请求成功。

headers属性返回完整的响应头信息,可通过headers['name']语法获取指定的头部字段值。

encoding属性返回服务器响应的字符编码格式,有助于正确解码文本内容。

url属性返回接口实际请求的完整URL地址,可能包含重定向后的最终地址。


import requests

url = "https://xxxx.com/user/login"
payload = {"phone":"1777982xxxx","pwd":"Ty+coun/mUj1saGV2OCK6p5kN9MNt8UznjaGsQ5A/nKPSH1NZW"}
headers = {'Content-Type': 'application/json'}

response = requests.request("POST", url, headers=headers, json = payload)

print(response.text)
print(response.json())
print(response.status_code)
print(response.url)
print(response.headers)
print(response.encoding)

以上内容涵盖了Python requests接口测试的主要知识点,希望对读者有所帮助。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表