一文3000字从0到1实现基于requests框架接口自动化测试项目实战(建议收藏)

news2024/9/30 1:26:15

requests库是一个常用的用于http请求的模块,它使用python语言编写,在当下python系列的接口自动化中应用广泛,本文将带领大家深入学习这个库

Python环境的安装就不在这里赘述了,我们直接开干。

 

01、requests的安装

windows下执行如下命令

pipinstallrequests-ihttp://pypi.douban.com/simple/--trust-host pypi.douban.com

mac终端下执行如下命令

python3-mpipinstallrequests-ihttp://pypi.douban.com/simple/--trust-host pypi.douban.com

02、自动化requests模块的常用方法

2.1get请求实战

# !/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.2post请求实战

post请求的参数格式通常有多种,我们依次学习

第一种表单形式的参数

```python

importrequests 

host='http://10.0.0.18:8080'



defpost():"""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))

2.3put接口实战

import requests



host='http://10.0.0.18:8080'

def put():

 """

put 清酒

:return:

"""

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

  #参数

  json={

    "brand":"Huawei",

    "color":"yellow",

    "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))

2.4delete请求

2.5request.session.request用法

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

结果如下:

D:\Python\Python36\python.exeD:/pycharmprojects/first/requetsstudy/pinter.py 响应状态码:200 

响应内容:{"code":"0","message":"success","data":"$22,378,198"}

Process finished with exit code 0

2.6token关联的接口如何做呢?

对于需要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 


绵薄之力【资源分享】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

这些资料,对于想进阶【自动化测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源免费分享~

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

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

相关文章

大数据常见应用场景及架构改进

大数据常见应用场景及架构改进大数据典型的离线处理场景1.大数据数据仓库及它的架构改进2.海量数据规模下的搜索与检索3.新兴的图计算领域4.海量数据挖掘潜在价值大数据实时处理场景大数据典型的离线处理场景 1.大数据数据仓库及它的架构改进 对于离线场景&#xff0c;最典型…

磷脂-聚乙二醇-丙烯酸酯;DSPE-PEG-AC试剂说明;DSPE-PEG-Acrylate科研用

中文名称&#xff1a;磷脂-聚乙二醇-丙烯酸酯 丙烯酸酯-聚乙二醇-磷脂 简称&#xff1a;DSPE-PEG-AC&#xff1b;DSPE-PEG-Acrylate 溶剂&#xff1a;溶于部分常规有机溶剂 PEG分子量:1000&#xff1b;2000&#xff1b;3400&#xff1b;5000等等 注意事项&#xff1a;避免…

JavaSE02-JVM、JRE、JDK

文章目录一、JVM、JRE、JDK区别二、JDK的安装和配置1.JDK安装2.测试验证3.环境变量配置3.1 配置JAVA_HOME系统变量3.2 配置Path环境变量再最前面加上&#xff1a; %JAVA_HOME%\bin一、JVM、JRE、JDK区别 JVM&#xff08;Java Virtual Machine&#xff09;&#xff0c;Java虚拟…

jar包和AAR包

以前在使用 Eclipse 开发 Android 时&#xff0c;如果想代码打包&#xff0c;只有 jar 包一个方法&#xff0c;但是 jar包 只能把 Java 文件代码打包进去&#xff0c;如果要使用一个有布局和资源的库的话&#xff0c;除了将 jar 放入 libs 外,还要引入相关的资源和配置文件&…

详解一个TCP连接的建立与销毁

目录 &#x1f332; 图解TCP三次握手建立连接 TCP数据报结构 TCP连接的建立&#xff08;三次握手&#xff09; 最后的说明 &#x1f332; 详细分析TCP数据的传输过程 &#x1f332; 图解TCP四次握手断开连接 &#x1f332; 图解TCP三次握手建立连接 TCP&#xff08;Tran…

【模拟集成电路】宽摆幅压控振荡器(VCO)设计

鉴频鉴相器设计&#xff08;Phase Frequency Detector&#xff0c;PFD&#xff09;前言一、VCO工作原理二、VCO电路设计VCO原理图三、压控振荡器&#xff08;VCO&#xff09;测试VCO测试电路图瞬态测试&#xff08;1&#xff09;瞬态输出&#xff08;2&#xff09;局部放大图&a…

【Java】Spring Boot项目的创建和使用

文章目录SpringBoot的创建和使用1. 什么是Spring Boot&#xff1f;为什么要学Spring Boot&#xff1f;2. Spring Boot项目的优点3. Spring Boot 项目的创建3.1 使用idea创建3.2 接下来创建Spring Boot项目4. 项目目录介绍和运行4.1 运行项目4.2 输出内容5. 总结SpringBoot的创建…

nyist最终淘汰赛第一场

我出的题喜欢吗 我要水题解所以每一篇题解都分一个博客 A 题解链接: Atcoder abc257 E_霾まる的博客-CSDN博客 构造贪心题 在本次淘汰赛中较难 B 题解链接: atcoder abc217 D_霾まる的博客-CSDN博客 STL二分题, 当然你可以数组二分, 相对麻烦一点 在本次淘汰赛中较简单…

学习 Python 之 Pygame 开发魂斗罗(二)

学习 Python 之 Pygame 开发魂斗罗&#xff08;二&#xff09;魂斗罗的需求开始编写魂斗罗1. 搭建主类框架2. 设置游戏运行遍历和创建窗口3. 获取窗口中的事件4. 创建角色5. 完成角色更新函数魂斗罗的需求 魂斗罗游戏中包含很多个物体&#xff0c;现在要对这些物体进行总结 类…

【RabbitMQ笔记02】消息队列RabbitMQ七种模式之最简单的模式

这篇文章&#xff0c;主要介绍RabbitMQ消息队列中七种模式里面最简单的使用模式。 目录 一、消息队列的使用 1.1、消息队列七种模式 1.2、最简单的模式使用 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;编写生产者 &#xff08;3&#xff09;编写消费者…

Enhanced ShockBurst (ESB)原文翻译

自我学习为主&#xff0c;同时也为所需要的提供一份资料 官方地址 增强型ShockBurst&#xff08;ESB&#xff09;是一种支持双向数据包通信的基本协议&#xff0c;包括数据包缓冲、数据包确认和丢失数据包的自动重传。ESB以低功耗提供无线通信&#xff0c;并且实现的代码量小且…

数据集市与数据仓库的区别

数据仓库是企业级的&#xff0c;能为整个企业各个部门的运作提供决策支持&#xff1b;而数据集市则是部门级的&#xff0c;一般只能为某个局部范围内的管理人员服务&#xff0c;因此也称之为部门级数据仓库。 1、两种数据集市结构 数据集市按数据的来源分为以下两种 &#x…

MATLAB算法实战应用案例精讲-【数模应用】多元线性回归(MLR)(附Java、python和matlab代码实现)

前言 在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。因此多元线性回归比一元线性回归的实用意义更大。 知识…

Chatgpt 编程 工作实战使用 (国内 镜像)

又到周末&#xff0c;时间像是乘着光阴的箭, 一去不返 &#xff0c; 时间的流逝 似乎没有直觉 &#xff0c;就像哪一座座大山&#xff0c;斗转星移 之间 便拔地而起了&#xff0c; 日复一日年复一年&#xff0c; 的工作使人麻木 &#xff0c;今天不写技术文&#xff0c;写一些有…

Leetcode.1247 交换字符使得字符串相同

题目链接 Leetcode.1247 交换字符使得字符串相同 Rating &#xff1a; 1597 题目描述 有两个长度相同的字符串 s1和 s2&#xff0c;且它们其中 只含有 字符 "x"和 "y"&#xff0c;你需要通过「交换字符」的方式使这两个字符串相同。 每次「交换字符」的时…

C++设计模式(21)——中介者模式

亦称&#xff1a; 调解人、控制器、Intermediary、Controller、Mediator 意图 中介者模式是一种行为设计模式&#xff0c; 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互&#xff0c; 迫使它们通过一个中介者对象进行合作。 问题 假如你有一个创建…

蓄水池抽样算法

蓄水池抽样&#xff0c;也称水塘抽样&#xff0c;是随机抽样算法的一种。基本抽样问题有一批数据&#xff08;假设为一个数组&#xff0c;可以逐个读取&#xff09;&#xff0c;要从中随机抽取一个数字&#xff0c;求抽得的数字下标。常规的抽样方法是&#xff0c;先读取所有的…

Spring IoC 和 Spring AOP

Spring IoC Ioc&#xff08;Inversion of control&#xff1a;即控制反转&#xff09;是一种设计思想&#xff0c;而不是一种具体的技术实现。IoC的思想就是将原本在程序中手动创建对象的控制权交给Spring框架来管理。 不过&#xff0c; IoC 并非 Spring 特有&#xff0c;在其…

蓝桥杯C/C++VIP试题每日一练之龟兔赛跑预测

&#x1f49b;作者主页&#xff1a;静Yu &#x1f9e1;简介&#xff1a;CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家&#xff0c;前端知识交流社区创建者 &#x1f49b;社区地址&#xff1a;前端知识交流社区 &#x1f9e1;博主的个人博客&#xff1a;静Yu的个人博客…

python的类如何使用?兔c同学一篇关于python类的博文概述

本章内容如目录 所示&#xff1a; 文章目录1. 创建和使用类1.1 创建第一个python 类1.2 版本差异1.3 根据类创建实例1. 访问属性2. 调用方法3. 创建多个实例2. 使用类和实例2.1 给属性指定默认值2.2 修改属性的值3. 继承3.1 子类的 __init __()3.2 给子类定义属性和方法3.3 重写…