接口自动化测试—request模块

安装request模块

命令⾏通过pip⼯具进⾏安装,命令:

pip install requests==2.31.0

可以在pycharm的terminal中输入这个命令来安装

然后点击,即可

介绍

requests 库是⼀个⾮常流⾏的HTTP客⼾端库,⽤于发送HTTP请求。 requests.get ⽅法⽤于 发送⼀个HTTP get 请求到指定的URL requests.get ⽅法返回⼀个 Response 对象,这个对象包含了服务器返回的所有信息。如:

常见的请求方法

cpp 复制代码
#发起get请求
def get(url, params=None, **kwargs)
#发起post请求
def post(url, data=None, json=None, **kwargs)

#⽀持不同请求⽅式,method:指定请求⽅法,
#⽀持``get``, ``OPTIONS``, ``HEAD``, ``post``, ``PUT``, ``PATCH``, or ``DELETE``
def request(method, url, **kwargs)

其中,里面的**kwargs表示后面还可以跟很多参数

get和pos的区别:

  • GET:

    • 语义: 从服务器获取资源。

    • 类比: 就像去图书馆查找一本书(查询操作)。

    • 自动化场景: 主要用于查询接口,例如获取用户列表、查询订单详情、搜索商品等。它不应该对服务器上的数据产生修改(副作用)。

  • POST:

    • 语义: 向服务器提交数据,用于创建或修改资源。

    • 类比: 就像在图书馆登记处填写表格,新增一本书(新增/修改操作)。

    • 自动化场景: 主要用于新增、提交、修改数据的接口,例如创建订单、用户登录、提交表单、上传文件等。

关于post和get的参数信息

下面我们来写几个例子,我们可以用posman工具了打个辅助

python 复制代码
import requests

r=requests.get("http://49.235.61.184:8080/")
print(r)

运行结果

其中,第一个表示响应,第二个参数表示状态码,关于状态码,有如下说明

200 2开头的都表⽰这个请求发送成功,最常⻅的就是200,就代表这个请求是ok的

服务器也返 回了。

• 300 3开头的代表重定向,最常⻅的是302,把这个请求重定向到别的地⽅了。

• 400 400代表客⼾端发送的请求有语法错误,401代表访问的⻚⾯没有授权,403表⽰没有权限访 问这个⻚⾯,404代表没有这个⻚⾯ •

500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果

下面我们再来看看其他的代码

python 复制代码
import requests

r=requests.get("http://49.235.61.184:8080/")
print(r.text)

打印结果:

如果将text换成jeson的话,会报错

如果是响应的结果是json格式的,应该用json来打印,如果是html的话,就用text来打印,什么是json格式,下面的就是

cpp 复制代码
json
{
  "name": "张三",
  "age": 25
}

那如何看是什么格式的嘞:如下

分别用三种方法访问百度一下

cpp 复制代码
import requests

req_get=requests.request("get","https://www.baidu.com")
req_post=requests.request("post","https://www.baidu.com")

#如果想要参数的位置不同,需要指定
req_get=requests.request(url="https://www.baidu.com",method="get")
req_post=requests.request(url="https://www.baidu.com",method="post")

get=requests.get("http://www.baidu.com")
post=requests.post("http://www.baidu.com")

print(req_get)
print(req_post)
print(get)
print(post)

带参数的时候

参数:data一般用于方法是post的时候,为表单格式的,paramas用于方法是get的时候

下面再看一个代码

cpp 复制代码
url = "http://8.137.19.140:9090/blog/getBlogDetail"
params= {
     "blogId":15686
 }
#
# #定义请求头
header = {
     "User_token_header":"eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlck5hbWUiOiJ6aGFuZ3NhbiIsImV4cCI6MTc0MDAyNTE2MX0.vbujuCAUkChZVWFmXiH4w4T1_DFv7C_g_hMtx873v_A" }
#
r = requests.request(method="GET",url=url,params=params,headers=header)
print(r.json())

有的时候我们登录一个页面再退出来,在pycharm中想要登录退出来的那个页面,需要指名user_token_header,这个是用户登录凭证,有的时候是cookie,如果没有这个,会显示没有权限,上面代码中的url的原型是:

http://8.137.19.140:9090/blog/getBlogDetail/blogId=15686

直接写这个url也可以,这样写就不用写下面的params

(在这里我们的例子会运行不了,因为没有找到一个好例子,知道这个知识点就可以了)

cpp 复制代码
url = "http://8.137.19.140:9090/user/login"

 data = {
     "username":"lisi",
     "password":"123456"
 }

 r = requests.request(method="POST",url=url,data=data)
 print(r.json())
#上面的代码表示登录博客系统
相关推荐
lintax1 小时前
计算π值-割圆法
python·公式推导·计算π·割圆法
升讯威在线客服系统1 小时前
从 GC 抖动到稳定低延迟:在升讯威客服系统中实践 Span 与 Memory 的高性能优化
java·javascript·python·算法·性能优化·php·swift
Coisinilove2 小时前
MATLAB微分方程求解
开发语言·matlab·微分方程
鲨辣椒100862 小时前
线程函数接口补充
java·开发语言·算法
workflower2 小时前
需求-技术需求
python·测试用例·需求分析·软件需求
沐知全栈开发2 小时前
Java 枚举
开发语言
钦拆大仁2 小时前
Java中的泛型
java·开发语言
0 0 02 小时前
CCF-CSP 33-2 相似度计算(jaccard)【C++】考点:STL容器(set/map)
开发语言·c++·算法
Mr YiRan2 小时前
C++高级之SLT中的容器学习与函数谓词
开发语言·c++·学习