接口自动化测试—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())
#上面的代码表示登录博客系统
相关推荐
深邃-几秒前
【Web安全】-Kali,Linux配置(2):Java环境配置,Python环境配置,Conda使用,PIP配置使用,SSH远程登录
java·linux·python·安全·web安全·网络安全·php
枫叶丹4几秒前
【HarmonyOS 6.0】Call Service Kit VoIP接口Wearable设备支持详解:从手机到手表,VoIP通话的全场景延伸
开发语言·华为·智能手机·harmonyos
jjjava2.01 分钟前
Java多线程编程:从入门到实战
java·开发语言
Fanfanaas2 分钟前
Linux 系统编程 进程篇 (六)
linux·服务器·c语言·开发语言
念恒123062 分钟前
python(环境安装,输入输出,变量)
python·学习
小年糕是糕手3 分钟前
【C/C++刷题集】顺序表、vector、链表、list核心精讲
c语言·开发语言·数据结构·c++·算法·leetcode·蓝桥杯
你数过天上的星星吗4 分钟前
Python学习笔记一(标识符、关键字、变量、数据类型、关系运算)
笔记·python·学习
会编程的土豆4 分钟前
从 C/C++ 视角快速上手 Go 语言:核心差异与避坑指南
c语言·开发语言·c++·后端·golang
水木流年追梦6 分钟前
CodeTop Top 300 热门题目10-验证IP地址
python·网络协议·tcp/ip·算法·leetcode
小白学大数据6 分钟前
Python 3.7 高并发爬虫:接口请求与页面解析并发处理
开发语言·爬虫·python