基于requests框架实现接口自动化测试项目实战

news2024/11/16 20:28:51

requests库是一个常用的用于http请求的模块,它使用python语言编写,在当下python系列的接口自动化中应用广泛,本文将带领大家深入学习这个库,Python环境的安装就不在这里赘述了,我们直接开干。

01
requests的安装

windows下执行如下命令:

pip install requests -i http://pypi.douban.com/simple/–trust-host pypi.douban.com

mac终端下执行如下命令:

python3 -m pip install requests -i http://pypi.douban.com/simple/–trust-host pypi.douban.com

02
常用方法

图片

1、get请求实战:

!/usr/bin python3

encoding: utf-8 -*-

@author: 沙陌 微信:Matongxue_2

@Time:2021/3/25 9:54

@Copyright:北京码同学网络科技有限公司

import requests

host=‘http://10.0.0.18:8080’

def get():

“”"

get接口请求

:return:

“”"

url =host+‘/pinter/com/getSku’ #接口地址

params={

'id':1

}

resp = requests.get(url,params=params)

status_code=resp.status_code #获取响应状态码

print(‘响应状态码:{}’.format(status_code))

text=resp.text #获取响应内容,结果类型是字符串

print(‘响应内容:{}’.format(text))

json=resp.json() #获取响应内容,结果是字典类型

print(‘响应内容:{}’.format(json))

resp_headers=resp.headers #获取响应headers

print(‘响应header:{}’.format(resp_headers))

if__name__==‘main’:

get()

结果如下:

D:\Python\Python36\python.exe D:/pycharmprojects/first/requetsstudy/pinter.py

响应状态码:200

响应内容:{“code”:“0”,“message”:“success”,“data”:{“skuId”:1,“skuName”:“ptest-1”,“price”:“645”,“stock”:709,“brand”:“testfan”}}

<class’dict’>

响应内容:{‘code’:‘0’,‘message’:‘success’,‘data’:{‘skuId’:1,‘skuName’:‘ptest-1’,‘price’:‘645’,‘stock’:709,‘brand’:‘testfan’}}

响应header:{‘Content-Type’:‘application/json;charset=UTF-8’,‘Transfer-Encoding’:‘chunked’,‘Date’:‘Fri,12Mar202122:13:49GMT’,‘Keep-Alive’:

‘timeout=20’,‘Connection’:‘keep-alive’}

Process finished with exit code 0

上述代码中请求发起后得到一个响应对象变量resp,那么resp对象的常用方法如下:

图片

2、post请求实战

第一种:表单形式的参数

import requests

host = ‘http://10.0.0.18:8080’

def post():

“”"

post表单

:return:

“”"

url=host+'/pinter/com/login'

#表单参数

data={

   'userName':'沙陌',

   'password':'123456'

 }

resp=requests.post(url=url,data=data)

status_code=resp.status_code#获取响应状态码

print(‘响应状态码:{}’.format(status_code))

text=resp.text#获取响应内容,结果类型是字符串

print(‘响应内容:{}’.format(text))

json=resp.json()#获取响应内容,结果是字典类型

print(‘响应内容:{}’.format(json))

resp_headers=resp.headers#获取响应headers

print(‘响应header:{}’.format(resp_headers))

第二种:json格式参数

import requests

host=‘http://10.0.0.18:8080’

def post_json():

“”"

postjson

:return:

“”"

url =host+‘/pinter/com/register’

#header里定义参数类型

headers={

'Content-Type':'application/json'

}

#json参数

json={

"userName":"沙陌",

"password":"1234",

"gender":1,

"phoneNum":"110",

"email":"beihe@163.com",

"address":"Beijing"

}

resp=requests.post(url=url,json=json)

status_code=resp.status_code #获取响应状态码

print(‘响应状态码:{}’.format(status_code))

text=resp.text #获取响应内容,结果类型是字符串

print(‘响应内容:{}’.format(text))

json=resp.json() #获取响应内容,结果是字典类型

print(‘响应内容:{}’.format(json))

resp_headers=resp.headers #获取响应headers

print(‘响应header:{}’.format(resp_headers))

3、put接口实战

import requests

host=‘http://10.0.0.18:8080’

def put():

“”"

put 清酒

:return:

“”"

url = host+‘/pinter/com/phone’ #接口地址

#参数

json={

"brand":"Huawei",


"memorySize":"64G",

"cpuCore":"8核",

"price":"8848",

"desc":"全新上市"

}

resp=requests.put(url=url,json=json)

status_code=resp.status_code #获取响应状态码

print(‘响应状态码:{}’.format(status_code))

text=resp.text #获取响应内容,结果类型是字符串

print(‘响应内容:{}’.format(text))

json=resp.json() #获取响应内容,结果是字典类型

print(‘响应内容:{}’.format(json))

resp_headers=resp.headers #获取响应headers

print(‘响应header:{}’.format(resp_headers))

4、delete请求

图片

5、request.session.request用法

可以自动管理cookie,比如如下需要采用cookie认证的接口

在这里插入图片描述
在这里插入图片描述

结果如下:

D:\Python\Python36\python.exeD:/pycharmprojects/first/requetsstudy/pinter.py

响应状态码:200

Process finished with exitcode 0

6、token关联的接口如何做呢?

图片

对于需要token关联的接口来说,需要从登录接口的返回值中提取token信息,并传递给需要token的接口

图片

结果如下:

D:\Python\Python36\python.exeD:/pycharmprojects/first/requetsstudy/pinter1.py

响应状态码:200

响应内容:{“code”:“0”,“message”:“success”,“data”:“$74,780,457”}

Process finished with exit code 0

总结一下:

requests库的请求方法里参数众多,所以简单划分一下:

查询参数就用 params=params

表单参数就用 data=data

json参数就用 json=json

请求头信息header就用 headers=headers

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

销售结束语话术

销售要记住&#xff0c;结束语不代表结束&#xff0c;而是下一次沟通的开始&#xff0c;所以销售要学会通过结束语来为自己争取下次沟通的机会。 前言 不论是哪一行业&#xff0c;对于销售而言&#xff0c;大多数成交的客户都是经过持续有效的跟踪的&#xff0c;还会出现有很多…

Java设计模式-原型模式Prototype

介绍 当我们有一个类的实例&#xff08;Prototype&#xff09;并且我们想通过复制原型来创建新对象时&#xff0c;通常使用Prototype模式。 原型模式是一种创建型设计模式。能够复制已有对象&#xff0c; 而又无需使代码依赖它们所属的类。 场景举例 现在有一只羊 tom&#xf…

iTerm2连接ssh配置

iTerm2连接ssh配置 #首先在/Users目录下按照如下命令创建sh脚本 cd /Users/#创建iterm文件夹 mkdir iterm#进入iterm文件夹 cd iterm#创建myserver.sh文件 touch myserver.sh#编辑myserver.sh文件 vi myserver.sh如果出现没有权限&#xff0c;就命令前面加上sudo 键盘输入i编…

斯皮尔曼相关(spearman)相关性分析一文详解+python实例代码

前言 相关性分析算是很多算法以及建模的基础知识之一了&#xff0c;十分经典。关于许多特征关联关系以及相关趋势都可以利用相关性分析计算表达。其中常见的相关性系数就有三种&#xff1a;person相关系数&#xff0c;spearman相关系数&#xff0c;Kendalls tau-b等级相关系数…

Java + OpenCv 根据PID/VID调用指定摄像头

问题&#xff1a; 主机接入了多个USB摄像头&#xff0c;传统的OpenCv是用摄像头插入usb的下标调取的&#xff0c;如过只接入一个摄像头那直接使用capture.open(0);这种方式调用没有任何问题&#xff0c;多个的话&#xff0c;就会出现问题&#xff0c;因为USB拔插时候对应摄像头…

用原生的方式写vue组件之深度剖析组件内部的原理

目录前言一&#xff0c;对组件的复习及理解二&#xff0c;模块化与组件化三&#xff0c;用原生的方式写vue组件3.1 准备工作3.2 创建组件3.3 组件中的data为什么是函数式写法3.4 组件中的template四&#xff0c;注册组件五&#xff0c;使用组件六&#xff0c;全局组件七&#x…

阿里云服务器ECS购买教程

本文是关于阿里云主机&#xff08;服务器ECS&#xff09;购买流程的一个详细介绍。阿里云服务器&#xff08;Elastic Compute Service&#xff0c;简称 ECS&#xff09;是一种简单高效、处理能力可弹性伸缩的计算服务&#xff0c;帮助您快速构建更稳定、安全的应用&#xff0c;…

机器学习实战教程(十二):线性回归提高篇

一、前言本篇文章讲解线性回归的缩减方法&#xff0c;岭回归以及逐步线性回归&#xff0c;同时熟悉sklearn的岭回归使用方法&#xff0c;对乐高玩具套件的二手价格做出预测。二、岭回归如果数据的特征比样本点还多应该怎么办&#xff1f;很显然&#xff0c;此时我们不能再使用上…

【Elsevier出版社】1区智能物联网类SCIEI,审稿友好~

1区智能物联网类SCI&EI 【出版社】Elsevier 【期刊简介】IF&#xff1a;5.5-6.0&#xff0c;JCR1区&#xff0c;中科院3区 【检索情况】SCI&EI 双检&#xff0c;正刊 【参考周期】3个月左右录用 【截稿日期】2023.2.28 【征稿领域】 ①物联网辅助的智能解决方案…

送给SQL开发者的一份新年礼物!麦聪软件发布一款纯Web化SQL开发工具,免安装还免费!

2023年新年伊始&#xff0c;麦聪软件再次迎来一个好消息&#xff1a;一款100%自主研发的纯Web化SQL开发工具——SQL Studio 1.0正式发布。这款产品让SQL开发者在Navicat、DBeaver之外&#xff0c;又多一款值得信赖的SQL开发工具可用。 图片 目前&#xff0c;SQL Studio 1.0面向…

qt读写xml文件(DOM和SAX两种方式)

一、XML简介&#xff1a; XML, 全称为扩展标记语言, 可用来标记数据、定义数据类型&#xff0c;是一种允许用户对自己的标记语言进行定义的源语言。XML非常适合万维网传输&#xff0c;提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据&#xff0c;是Internet环境…

纵向联邦线性回归实现-Federated Machine Learning Concept and Applications论文复现

本实验的算法实现思路来自这篇论文Federated Machine Learning Concept and Applications 文章目录场景介绍同态加密算法python的phe库实现了加法同态加密角色1角色2传统的线性回归纵向联邦线性回归纵向联邦线性回归代码实现导入工具包准备数据使用普通线性回归训练搭建训练过程…

什么神仙操作,用代码能画这样的图

大家好&#xff0c;我是车辙。不知道同学们画流程图或者时序图一般用的什么软件&#xff1f;Visio 还是 Process On 或者语雀&#xff1f; 因为公司原因&#xff0c;在很多情况下&#xff0c;我一般用语雀画流程图或者思维导图。不过凡事也有例外&#xff0c;对于比较简单的图…

你的电路是抄来的还是算出来的?

在你看这篇文章之前&#xff0c;我想提出几点说明&#xff1a; &#xff08;1&#xff09;最近在看拉扎维的书&#xff0c;写下来这些东西&#xff0c;这也只是我个人在学习过程中的一点总结&#xff0c;有什么观点大家可以相互交流&#xff1b;&#xff08;2&#xff09;不断的…

立创eda专业版学习笔记(3)(隐藏部分飞线)

又到了喜闻乐见的隐藏gnd飞线环节&#xff0c;我发现这个专业版的操作和标志版不一样&#xff0c;我想试一试这个标题的搜索结果&#xff0c;发现有用的结果还是很少&#xff0c;于是我也随便总结了一下&#xff0c;算是添砖加瓦吧。 原来的飞线是这个样子的&#xff1a; 现在我…

巧妙解决appleid问题答案忘了的问题

先说下这个问题解决办法的目标——主要是为了释放被占用的appleid邮箱&#xff0c;而如果你想保留该appleid并且正常使用的话&#xff0c;那么需要付出一点代价&#xff0c;也是可以做到的。 我最近就碰到这种情况&#xff0c;某个邮箱被appleid占用了&#xff0c;问题答案因为…

从实战出发,聊聊缓存数据库一致性

在云服务中&#xff0c;缓存是极其重要的一点。所谓缓存&#xff0c;其实是一个高速数据存储层。当缓存存在后&#xff0c;日后再次请求该数据就会直接访问缓存&#xff0c;提升数据访问的速度。但是缓存存储的数据通常是短暂性的&#xff0c;这就需要经常对缓存进行更新。而我…

Linux常用命令——lsb_release命令

在线Linux命令查询工具 lsb_release 显示发行版本信息 补充说明 LSB是Linux Standard Base的缩写&#xff0c;lsb_release命令用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数&#xff0c;则默认加上-v参数。 -v 显示版本信息。 -i 显示发行版的id。 -d 显示该…

2023 Real World CTF 体验赛 --- wp

文章目录misc&#x1f411;了拼&#x1f411;webEvil MySQL ServerBe-a-Language-ExpertBe-a-Wiki-HackerYummy ApiApacheCommandTextmisc &#x1f411;了拼&#x1f411; 游戏类题目&#xff0c;直接打开js文件搜索rwctf&#xff0c;发现flag rwctf{wellcome_to_the_rwct…

跟着开源项目学java8-从支持最大密码重试次数的提交看redis的场景化使用和基于jdk的schedule的异步延迟日志记录策略

我们这里要实现的功能是登录时添加账号登录错误时最大错误次数和锁定时间&#xff0c;功能不复杂&#xff0c;这次提交里面我们主要来看下一个项目里面一个业务功能怎样写更加优雅 核心实现 我们先来看核心实现的思路 首先是 login 方法重写&#xff0c;进入 loadUserByUser…