python接口测试中—Requests模块的使用
Posted wanglle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python接口测试中—Requests模块的使用相关的知识,希望对你有一定的参考价值。
Requests模块的使用
中文文档API:http://2.python-requests.org/en/master/
1、发送get、post请求
import requests reponse = requests.get("http://www.baidu.com") reponse = requests.post("http://www.baidu.com")
2、响应的属性
-
查看响应内容
-
response.text 属性
-
respone.content.decode(‘utf8‘) 属性,字节形式的需要使用decode解码
-
-
查看响应码 response.status_code 属性
-
查看响应头 respone.headers 属性
-
查看cookie信息 respone.cookies 属性
-
查看请求方法 respone.request 属性
- 如何解决充值接口进行充值之前需要先调用登录接口进行登录?
方法一:可通过创建session对象,自动保存上次请求的cookie信息,可解决鉴权、授权的问题。
import requests from requests.sessions import Session # 创建一个session对象(会话) # 作用:自动保存上次请求的cookie信息 session = Session() # 注册接口 register_url = "http://ip:port/futureloan/mvc/api/member/register" register_data = ‘mobilephone‘:‘18814726727‘,‘pwd‘:‘123456‘,‘regname‘:‘一纪‘ register_response = session.post(url=register_url,data=register_data) # print(register_response.status_code) print(register_response.text) # 登录接口 login_url = "http://ip:port/futureloan/mvc/api/member/login" login_data = ‘mobilephone‘:‘18814726727‘,‘pwd‘:‘123456‘ login_response = requests.get(url=login_url,data=login_data) print(login_response.text) # 充值接口 rech_url = "http://ip:port/futureloan/mvc/api/member/recharge" rech_data = ‘mobilephone‘:‘18814726727‘,‘amount‘:‘200‘ rech_response = requests.get(url=rech_url,data=rech_data) print(rech_response.text)
输出结果为:
方法二:通过在requsets请求中传入cookies信息,也可解决鉴权、授权的问题。
import requests # 登陆接口 login_url = "http://ip:port/futureloan/mvc/api/member/login" login_data = ‘mobilephone‘:‘18814726727‘,‘pwd‘:‘123456‘ login_response = requests.post(url=login_url,data=login_data) print(login_response.text) print(login_response.cookies) cookies = login_response.cookies # 充值接口 rech_url = "http://ip:port/futureloan/mvc/api/member/recharge" rech_data = ‘mobilephone‘:‘18814726727‘,‘amount‘:‘200‘ rech_response = requests.post(url=rech_url,data=rech_data,cookies=cookies) print(rech_response.text)
输出结果为:
-
heraders参数应用
headers = "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/77.0.3865.35 Safari/537.36", # "Token":"", "cookie":"JSESSIONID=5039A5FD7567C7C78B8180C50D340A5F", # 请求的cookie信息 "content-Type":"application/x-www-form-urlencoded" # post请求格式 rech_response = requests.post(url=rech_url,data=rech_data,headers=headers)
3、封装一个自己的requests类
目的:为了根据用例中的请求方法,来决定发起什么类型的请求。
为了输出loggib日志
HttpRequests类用来直接发送请求不记录cookies信息的;而HttpRequestsCookies类可以记录cookies信息。
import requests class HttpRequests(): # 直接发送请求而不记录cookies信息的 def request(self,method,url,params=None,data=None,headers=None,cookies=None,json=None): method = method.lower() # 判断请求的方法是post还是get if method == "post": # 判断post请求是否需要使用json来传参(适用于接口参数中有使用json传参的) if json: # logger.info("正在发送请求,请求地址:,请求参数:".format(url,json) return requests.post(url=url,json=json,headers=headers,cookies=cookies) else: # logger.info("正在发送请求,请求地址:,请求参数:".format(url,data)) return requests.post(url=url, data=data, headers=headers, cookies=cookies) elif method == "get": # logger.info("正在发送请求,请求地址:,请求参数:".format(url,params)) return requests.get(url=url, params=params, headers=headers, cookies=cookies) class HttpRequestsCookies(): # 发送请求且记录cookies信息,给下一次使用 def __init__(self): # 创建一个session对象 self.session = requests.sessions.Session() def request(self,method,url,params=None,data=None,headers=None,cookies=None,json=None): method = method.lower() # 判断请求的方法是post还是get if method == "post": # 判断post请求是否需要使用json来传参(适用于接口参数中有使用json传参的) if json: # logger.info("正在发送请求,请求地址:,请求参数:".format(url,data)) return self.session.post(url=url,json=json,headers=headers,cookies=cookies) else: # logger.info("正在发送请求,请求地址:,请求参数:".format(url,data)) return self.session.post(url=url, data=data, headers=headers, cookies=cookies) elif method == "get": # logger.info("正在发送请求,请求地址:,请求参数:".format(url,params)) return self.session.get(url=url, params=params, headers=headers, cookies=cookies) # 断开session连接 def close(self): self.session.close() if __name__ == "__main__": r = HttpRequestsCookies() # 登录接口 login_url = "http://ip:port/futureloan/mvc/api/member/login" login_data = ‘mobilephone‘: ‘18814726727‘, ‘pwd‘: ‘123456‘ response = r.request(‘post‘,url=login_url, data=login_data) print(response.text) # 充值接口 rech_url = "http://ip:port/futureloan/mvc/api/member/recharge" rech_data = ‘mobilephone‘: ‘18814726727‘, ‘amount‘: ‘200‘ response = r.request(‘post‘, url=rech_url, data=rech_data) print(response.text)
输出结果为:
以上是关于python接口测试中—Requests模块的使用的主要内容,如果未能解决你的问题,请参考以下文章
Python接口测试-使用requests模块发送GET请求
Python接口测试-使用requests模块发送post请求