day28-测试自动化之Requests库的发送请求、响应内容、Cookie和session

目录

一、发送请求

        1.1.GET请求

                1).作用

                2).步骤

                3).响应对象

                4).代码

                5).带参代码

        1.2.POST请求

                1).作用

                2).应用

                3).参数

                4).代码(地址已失效)

                5).扩展

        1.3.PUT请求

                1).作用

                2).应用

                3).参数

                4).响应

                5).代码(地址已失效)

        1.4.DELETE请求

                1).作用

                2).应用

                3).响应

                4).代码

二、响应内容

        2.1.方法

        2.2.代码

三、Cookie和Session

        3.1.Cookie

        3.2.Session

                1).介绍

                2).创建session对象

                3).获取及应用

                4).代码

四、今日学习思维导图

一、发送请求

        1.1.GET请求

                1).作用

                        获取资源 (查询)

                2).步骤

                        2.1).导包import request

                        2.2).调用get方法request.get()

                3).响应对象

                        3.1).获取URL:response.url

                        3.2).获取响应状态码:response.status_code

                        3.3).获取响应信息:response.text

                4).代码

import requests

response = requests.get('https://www.google.com')

# 获取请求url
print(response.url)
# 获取响应状态码
print(response.status_code)
# 以文本形式显示响应内容
print(response.text)

                5).带参代码

# 导包
import requests

# 带参调用
# 不推荐静态写死
# 参数:params:字典或字符串(推荐字典)

# 定义字典
# params = {"id":1001}

# 定义字典
# params = {"id": "1001,1002"} # %2C 为ASCI值的逗号

# 定义字典
params = {"id": 1001, "kw": "广州"}

response = requests.get('https://www.google.com', params)

# 获取请求url
print(response.url)
# 获取响应状态码
print(response.status_code)
# 以文本形式显示响应内容
print(response.text)

        1.2.POST请求

                1).作用

                        新增资源

                2).应用

                        2.1).导包 import requests

                        2.2).调用post方法:requests.post()

                3).参数

                        3.1).url:新增接口的url地址

                        3.2).json:新增请求的报文

                        3.3).headers:请求信息头

                4).代码(地址已失效)

# 请求地址:http:127.0.0.1:8000/api/departments/
# 请求信息头:Content-Type: application/json

# json格式
# 导包
import requests

# 调用Post方法
# 请求url
url = 'http:127.0.0.1:8000/api/departments/'
# 请求headers
headers = {'Content-Type': 'application/json'}
# 请求json
data = {
    "data": [
        {
            "dep_id": "TT701",
            "dep_name": "Test学院",
            "slogan": "Test-Master",
            "master_nane": "Here is Slogan"
        }
    ]
}

response = requests.post(url,json=data,headers=headers)

# 获取响应对象
print(response.json())

# 获取响应状态码
print(response.status_code)

                5).扩展

                        5.1).data与json区别

                                1.data:字典对象

                                2.json:json字符串

                                3.提示:在python中字典对象和json字符串长的一样,但是后台格式是有区别的

                                4.如何将字典对象转为json字符串

                                        (1).导入json

                                        (2).json.dumps(字典对象)转换json字符串

                        5.2).响应数据json()与text区别

                                1.json()返回类型字典,可以通过键名来获取响应的值

                                2.text:返回的类型为字符串,无法通过键名来获取响应的值

                                3.提示:共同点长得都像字典

        1.3.PUT请求

                1).作用

                        更新资源

                2).应用

                        2.1).导包 import requests

                        2.2).调用put方法request.put()

                3).参数

                        参考post方法参数

                4).响应

                        4.1).response.json()

                        4.2).response.status_code

                5).代码(地址已失效)

# 请求地址:http:127.0.0.1:8000/api/departments/
# 请求信息头:Content-Type: application/json

# json格式
# 导包
import requests

# 调用Post方法
# 请求url
url = 'http:127.0.0.1:8000/api/departments/TT701/'
# 请求headers
headers = {'Content-Type': 'application/json'}
# 请求json
data = {
    "data": [
        {
            "dep_id": "TT701",
            "dep_name": "Testdep_name学院",
            "slogan": "Test-Master",
            "master_nane": "Here is Slogan"
        }
    ]
}

response = requests.put(url,json=data,headers=headers)

# 获取响应对象
print(response.json())

# 获取响应状态码
print(response.status_code)

        1.4.DELETE请求

                1).作用

                        删除资源

                2).应用

                        2.1).导包 import requests

                        2.2).调用方法delete

                3).响应

                        响应状态码:204

                4).代码

# 请求地址:http:127.0.0.1:8000/api/departments/
# 请求信息头:Content-Type: application/json

# json格式
# 导包
import requests

# 调用delete方法
# 请求url
url = 'http:127.0.0.1:8000/api/departments/TT701/'
response = requests.delete(url)

# 获取响应状态码 --204
print(response.status_code)

二、响应内容

        2.1.方法

                1).response.status_code状态码

                        1.1).作用:获取响应状态码

                        1.2).格式:响应对象.status_code

                2).response.url请求url

                        2.1).作用:获取请求url

                        2.2).格式:响应对象.url

                3).response.encoding查看响应头部字符编码

                        3.1).作用

                                1.查看默认请求编码格式--->响应对象.encoding

                                2.设置响应编码格式--->响应对象.encoding="UTF-8"

                4).response.headers头信息

                        4.1).作用:获取服务器响应信息头

                        4.2).格式:响应对象.headers

                5).response.cookiescookie信息

                        5.1).作用:获取响应cookie信息(服务器产生)

                        5.2).格式:响应对象.cookies

                6).response.text文本形式的响应内容

                        6.1).作用:以文本形式解析响应内容

                        6.2).格式:响应对象.text

                7).response.content字节形式的响应内容

                        7.1).作用:以字节码形式解析响应内容

                        7.2).格式:响应对象.content

                8).response.json() JSON形式的响应内容

                        8.1).作用:以json字符串形式解析响应内容

                        8.2).格式:响应对象.json()

        2.2.代码

# 导包
import requests

# url
url = 'http://www.baidu.com'

# 调用get方法
response = requests.get(url)

# 查看状态码
print(response.status_code)

# 查看url
print(response.url)

# 查看响应头部字符编码  ISO-8859-1
print(response.encoding)

# 查看头信息 headers信息比较重要(token/session都存储在信息头中)
print(response.headers)

# 查看cookie信息
print(response.cookies)

# 查看文本形式的响应内容
print(response.text)

# 查看字节形式的响应内容
print(response.content)

# 查看json形式的响应内容
print(response.json())

三、Cookie和Session

        3.1.Cookie

                1).来源:由服务器生成

                2).作用:区分同一请求客户端

                3).获取:响应对象.cookies

                4).设置

                        4.1).设置:cookies={"获取出来的cookies键名":"获取出的值"}

                        4.2).应用:request.请求方法(url,cookies=cookies)

                5).代码

# 导包
import requests

# 调用post
url_login = "https://demo6.tp-shop.cn/home/User/login.html"

url_code = "https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
r = requests.get(url_login)

r_cookie = r.cookies
# print("获取的cookie为",r_cookie)
# print(r.content)
# with open("./code.jpg","wb") as f:
#     f.write(r.content)
#     code = input('请输入验证码:')

# 设置cookie变量,单独获取cookie值
cookie = {"PHPSESSID": r_cookie["PHPSESSID"]}

# 添加cookie信息
data = {
    "username": "1967535686@qq.com",
    "password": "20021017",
    "verify_code": "8888"
}
response = requests.post(url_login, data=data, cookies=cookie)
# 验证是否登录
# print(response.json())
print(response.status_code)

# 查询订单
url_order = "https://demo6.tp-shop.cn/Home/Order/order_list.html"
response_order = requests.get(url_order,cookie)
print(response_order.status_code)

        3.2.Session

                1).介绍

                        1.1).在requests里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。

                        1.2).会话能让我们在跨请求时候保持某些参数,比如在同一个session实例发出的所有请求之间保持cookie。

                2).创建session对象

                        session = requests.Session()

                3).获取及应用

                        3.1).获取

                                1.导包import requests

                                2.获取session对象session=requests.session()

                        3.2).应用

                                1.通过session对象.方法

                                2.提示:无论通过session对象调用哪个方法,返回结果都是response对象

                4).代码

# url_login = "https://demo6.tp-shop.cn/home/User/login.html"
# url_code = "https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
# data = {
#     "username": "1967535686@qq.com",
#     "password": "20021017",
#     "verify_code": "8888"
# }
# url_order = "https://demo6.tp-shop.cn/Home/Order/order_list.html"

# 导包
import requests

# 获取session对象
session = requests.Session()

# 请求验证码让session对象记录cookies信息
url_code = "https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
session.get(url_code)
print(session.cookies)

# 请求登录
url_login = "https://demo6.tp-shop.cn/home/User/login.html"
data = {
    "username": "19675356861",
    "password": "20021017",
    "verify_code": 8888
}
re = session.post(url_login, data)
print(re.status_code)
# 查询订单
url_order = "https://demo6.tp-shop.cn/Home/Order/order_list.html"
re2 = session.get(url_order)
print(re2.status_code)

四、今日学习思维导图

  • 26
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值