码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-10-01 20:19:40      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:data   agent   自己的   自己   com   www   pwd   rom   htm   

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模块的使用

标签:data   agent   自己的   自己   com   www   pwd   rom   htm   

原文地址:https://www.cnblogs.com/wanglle/p/11581677.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!