【接口测试_03课_-接口自动化思维梳理及Requests库应用】

一、通过代码,实现Jmeter

1、项目要放在虚拟环境里面,解释器要使用虚拟环境的

上面是虚拟环境,下面是系统环境。2选一

venv目录

 查看当前虚拟环境已存在的依赖包

2、安装Requests依赖包 

1)安装命令

pip install requests

如果是mac电脑需要注意,python2是使用pip命令。python3 是使用 pip3 命令

2) 安装完之后,查看安装的版本

pip show requests

或者使用 pip list 去看,但是如果包太多,list内容就太多了 

3)requests对应的方法有13个参数 

接口响应码及对应的含义:

3:重定向
2:成功
1:响应正确
4:客户端问题
5:服务器问题

3、编写代码

注意:

Requests 是用Python语言编写HTTP库,专门用于发于请求的库

注意:
params 一般就是拼接在url当中(问号后面的参数)
Requests对应的方法中,有13参数。
http请求和https请求没有什么区别,只是https多了SSL证书,如果你们证书验证不通过,你们可以尝试把 verity= False

1、get请求

获取对应的响应数据
获取对应的响应数据:res.方法


# 1. 获取对应的请求URL
# print(res.url)

# 2. 获取对应响应数据---并且以文本信息显示
# print(res.text)

# 3. 获取对应响应数据---并且以JSON格式显示,如果你的数据非Json格式则会报错
# print(res.json())  # 用案例三可以看到效果

# 4. 获取对应响应数据---并且以字节方式显示,会自动为你解码 gzip 和 deflate 压缩
# print(res.content)

# 5. 获取响应的状态码
# print(res.status_code)

# 6. 获取对应的响应头 ,数据显示是什么格式由:'Content-Type': 'text/html; 决定
# print(res.headers)
 获取对应的请求数据
# 获取对应的请求数据:res.request.方法


# 1、对应的请求方法
# print(res.request.method)

# 2、对应的请求的url
# print(res.request.url)

# 3、对应的请求的头部
# print(res.request.headers)
1)以文本打印的方式,将请求的文本信息打印出来
import requests

urldata = "http://shop-xo.hctestedu.com/"

r = requests.get(urldata)   # 直接传urldata (位置传参)

# 获取对象的文本信息
print(r.text)

运行结果 

2) Params,请求的参数是拼接在问好后面

下面get里面的两个url不同。前一个紫色的是 get请求的参数,后面的黑色的,是请求地址的变量

3)查看请求的url ,params参数直接拼接在URL里面
# params  参数应用,直接拼在链接里面

urldata = "https://www.baidu.com/s?wd=hello"

r = requests.get(urldata)

#打印请求的url
print(r.url)

4) 查看请求的url ,params参数不拼接在URL里面,而是使用公共参数
# # params  参数应用,通过变量方式使用

urldata = "https://www.baidu.com/s"

paramsdata = {"wd": "hello11"}

r = requests.get(url=urldata,params=paramsdata)

print(r.url)

 2、post请求

1)普通的表单提交
import requests

# 案例 : 登录案例
# 分析: 四要素 :请求url 请求方法(POST) 请求数据 响应数据

# requests默认的post请求数据方式是:'Content-Type': 'application/x-www-form-urlencoded'

url = "http://shop-xo.hctestedu.com?s=api/user/login"
public_data = {"application": "app", "application_client_type": "weixin"}
data = {"accounts": "xxx", "pwd": "xxx", "type": "username"}

res = requests.post(url=url, params=public_data, data=data)

# ----------------------------------------
# 1. 获取对应的请求URL
print(res.url)

# 2. 获取对应的文本信息
# print(res.text)

# 3. 获取请求头
print(res.request.headers)

结果 

2) Json表单的提交:
方法一:json提交数据直接
# 方法一:json提交数据直接:json = 请求数据
url = "http://shop-xo.hctestedu.com?s=api/user/login"
public_data = {"application": "app", "application_client_type": "weixin"}
data = {"accounts": "hami", "pwd": "123456", "type": "username"}

res = requests.post(url=url, params=public_data, json=data)

# ----------------------------------------
# 1. 获取对应的请求URL
print(res.url)
# # 2. 获取对应的文本信息
# print(res.text)
# # 3. 获取请求头
# print(res.request.headers)

 

方法二:设置请求头为json格式

(字典是数据类型,JSON是数据格式.字典不是JSON类型)

# 方法二:设置请求头为json格式
url = "http://shop-xo.hctestedu.com?s=api/user/login"
public_data = {"application": "app", "application_client_type": "weixin"}

#下面是自己手写header
header = {'Content-Type': 'application/json; charset=utf-8'}

#  data在这个位置,它只是一个字典(字典是数据类型,JSON是数据格式.字典不是JSON类型),而我们需要进行处理变成字符串格式。
data = {"accounts": "hami", "pwd": "123456", "type": "username"}

#  下面转化为JSON,是将 dict 转换为 string
new_data = json.dumps(data)

res = requests.post(url=url, params=public_data, headers=header, data=new_data)

# ----------------------------------------
# # 1. 获取对应的请求URL
# print(res.url)
# # 2. 获取对应的文本信息
# print(res.text)
# # 3. 获取请求头
# print(res.request.headers)

3)上传图片
3.1)上传图片,需要使用一个轻量级的WEB框架,Flask,创建了一个应用程序,去保存图片文件。
pip install flask

下面这部分代码相当于服务端,处理图片上传和存储逻辑 

3.2)上传文件

下面的代码,相当于前端,去上传图片

import requests

# 分析: 四要素 :请求url 请求方法(POST) 请求数据 响应数据

#这个是老师自己写的一个上传图片的接口,服务器不一定还能再用了
url = "http://127.0.0.1:5000/upload"
data = {"image": open("20240223220740.png", "rb")}

res = requests.post(url=url, files=data)


# ----------------------------------------
# 1. 获取对应的请求URL
print(res.url)
# 2. 获取对应的文本信息
# print(res.text)  # unicode编码
print(res.json())
# 3. 获取响应头
print(res.headers)
# 4. 获取请求头
print(res.request.headers)

 面试点

接口请求的时候,如何一直保持会话:

# 总结:如果说工作当中有需要保持会话,不能直接用requests去发送请求
# 需要实例化一个session的请求对象,发送请求(在这一个会话里面,后续其他请求都用session对象进行发送即可)



# 面试题: session\token\cookies\签名 区别:
token是请求参数
cookie 、session是保持会话

# 核心点:都是用来鉴权 (一般用哪种,这个不一定,看开发)
# 1. token 一般就是一个请求参数,放在请求头 (时效性\也有可能是其它名字)。开发用算法生成的
# 2. 存储位置不同 :cookie存储在客户端,session存储在服务器端。
# 3. 大小限制不同 :cookie有大小限制,而session没有大小限制。
# 4. 安全隐患不同 :cookie存在安全隐患,通过拦截或本地文件找得到存储在其中的信息。
# 5. 时效性不同 :cookie有到期时间,而session只在用户关闭浏览器时消失。

3、接口断言

# 断言:期望结果和实际结果进行对比

# assert 表达式,信息

# 如果说正确的话不会有什么提示,错误的话,会有异常信息


assert 1 == 1, "因为是正确的,所以这行提示不会打印"

assert 1 == 2, "两者不等于的报错提示"

断言成功--不会打印断言提示
 断言失败--才会打印断言提示

绿色的是断言的值,蓝色的才是提示信息

复习重点:

 

3、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值