ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python接口测试中—Requests模块的使用

2019-10-01 19:03:33  阅读:189  来源: 互联网

标签:cookies 请求 python response url 模块 Requests data login


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)

 

 

输出结果为:

 

标签:cookies,请求,python,response,url,模块,Requests,data,login
来源: https://www.cnblogs.com/wanglle/p/11581677.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有