Python requests库接口测试实战:GET/POST参数与响应处理详解
本文详细介绍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接口测试的主要知识点,希望对读者有所帮助。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













