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

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

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请求实战

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 \py thon. exeD: /pycharmprojects/first/requetsstudy/pinter.py
响应状态码: 200
响应内容:{"code":"0", "message": "success", "data": "$22; 378,198"}
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.mfbz.cn/a/390780.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深夜突发! OpenAI震撼发布了SORA文生视频模型,对职场人的影响可能跟你想的不一样

深夜突发! OpenAI震撼发布了SORA文生视频模型&#xff0c;对职场人的影响可能跟你想的不一样。 马上就要节后返工了&#xff0c;顾问老师也早已回到了温暖的广州。与一位同城的学员相聚在老广州的一个茶楼中&#xff0c;喝起了下午茶。面对各式的广式茶点&#xff0c;在淡淡的茶…

C++并发编程 -3.同步并发操作

本文介绍如何使用条件变量控制并发的同步操作、C 并发三剑客&#xff0c;函数式编程 一.条件变量 1.概念 C条件变量&#xff08;condition variable&#xff09;是一种多线程编程中常用的同步机制&#xff0c;用于线程间的通信和协调。它允许一个或多个线程等待某个条件的发生…

迷失在前端框架中的初级开发者,总觉得大厦要从二层开始建

知乎有人提问&#xff1a;现在是框架主导前端时代&#xff0c;还有必要学习Html&#xff0c;CSS和JavaScript吗&#xff1f;我看很愕然&#xff0c;框架可以节省力气&#xff0c;难道都可以替代前端基础了吗&#xff1f; 一、起因 因为贝格前端工场的主营业务就是前端开发&…

【中英双语】OpenAI Sora文本转视频模型的技术分析!全新的AI视频叙事时代即将到来!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

Shellcode免杀对抗(C/C++)

Shellcode C/C免杀&#xff0c;绕过360安全卫士、火绒安全、Defender C/C基于cs/msf的上线 首先是测试一下shellcode上线&#xff0c;主要是俩种方法 测试环境 攻击机&#xff1a;kali2023 靶机&#xff1a;win10 msf方法 首先是启动msf msfconsole 然后msf生成一个sh…

【C语言】linux内核tcp/ip协议代码

一、linux内核tcp/ip协议源码有哪些&#xff1f; Linux内核中实现TCP/IP协议栈的源代码主要位于内核源码树的net/ipv4和net/ipv6目录下&#xff0c;针对IPv4和IPv6协议。不单是TCP/IP协议&#xff0c;还包含了UDP以及其他相关的网络层协议实现。 这里是一些与TCP/IP协议栈相关…

云计算基础-存储虚拟化(深信服aSAN分布式存储)

什么是存储虚拟化 分布式存储是利用虚拟化技术 “池化”集群存储卷内通用X86服务器中的本地硬盘&#xff0c;实现服务器存储资源的统一整合、管理及调度&#xff0c;最终向上层提供NFS、ISCSI存储接口&#xff0c;供虚拟机根据自身的存储需求自由分配使用资源池中的存储空间。…

对账中心系统架构设计与实现的实践总结

随着数字化时代的到来&#xff0c;越来越多的企业开始使用对账中心系统来管理其财务交易。对于一个成功的对账中心系统&#xff0c;其架构设计和实现非常关键。本文将探讨对账中心系统架构设计与实现的重要性、关键原则和实施过程中需要考虑的要点&#xff0c;帮助企业构建强大…

模型训练 —— AI算法初识

一、背景 AI算法中模型训练的主要目的是为了让机器学习算法从给定的标注数据中学习规律、特征和模式&#xff0c;并通过调整模型内部参数&#xff0c;使模型能够对未见过的数据进行准确预测或决策。具体来说&#xff1a; 1. **拟合数据**&#xff1a;模型通过训练来识别输入数…

【Spring篇】 项目加盐加密处理

目录 1. MD5 加密算法 2. 加盐加密流程 3. Spring Security 实现加盐加密 1. 添加 Spring Security 框架 2. 关闭 Spring Security 认证 3.实现加盐加密 1. MD5 加密算法 MD5 是 Message Digest Algorithm 的缩写&#xff0c;译为信息摘要算法&#xff0c;它是 Java …

QGIS004:【08图层工具箱】-导出到电子表格、提取图层范围

摘要&#xff1a;QGIS图层工具箱常用工具有导出到电子表格、提取图层范围等选项&#xff0c;本文介绍各选项的基本操作。 实验数据&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1ZK4_ShrQ5BsbyWfJ6fVW4A?pwdpiap 提取码&#xff1a;piap 一、导出到电子表格 工具…

【Web】CTFSHOW java刷题记录(全)

目录 web279 web280 web281 web282 web283 web284 web285 web286 web287 web288 ​web289 web290 web291 web292 web293 web294 web295 web296 web297 web298 web299 web300 web279 题目提示 url里告诉我们是S2-001 直接进行一个exp的搜 S2-001漏洞分析…

文件夹删不掉,显示在另一个文件中打开怎么办

问题&#xff1a; 一、想要删掉这个文件夹&#xff0c;却因为文件夹中的文件打开了删不掉&#xff0c;这里我因为做的测试&#xff0c;所以是知道打开了什么 二、一般情况下文件比较多时&#xff0c;是不知道打开了什么的&#xff0c;长这个样子 解决&#xff1a; 一、打开任…

JAVA面试题并发篇

1. 线程状态 要求 掌握 Java 线程六种状态 掌握 Java 线程状态转换 能理解五种状态与六种状态两种说法的区别 六种状态及转换 分别是 新建 当一个线程对象被创建&#xff0c;但还未调用 start 方法时处于新建状态 此时未与操作系统底层线程关联 可运行 调用了 start 方法…

初识数据库:探索数据的世界

初识数据库&#xff1a;探索数据的世界 1. 什么是数据库&#xff1f;2. 数据库的类型2.1 关系型数据库&#xff08;RDBMS&#xff09;2.2 非关系型数据库&#xff08;NoSQL&#xff09; 3. 为什么使用数据库&#xff1f;4. 如何选择合适的数据库&#xff1f;5. 结语 在信息技术…

【TC3xx芯片】TC3xx芯片SMU模块详解

目录 前言 正文 1.SMU功能概述 1.1 SMU架构 1.2 SMU_core 1.3 SMU_stdby 2. SMU功能详述 2.1 SMU_core 2.1.1 Reset类型 2.1.2 接口&#xff08;Interfaces&#xff09;概述 2.1.2.1 SMU_core到SCU的接口 2.1.2.2 SMU_core到IR的接口 2.1.2.3 SMU_core到Ports(Err…

Python绘制折线图、散点图...Pyplot库功能使用示例大全

matplotlib.pyplot库功能使用示例&#xff0c;Python绘制折线图、散点图... 1、简单折线图示例2、设置中文字符&#xff0c;解决乱码问题3、添加标记格式4、添加y值标记5、添加图例6、设置字体大小7、设置坐标轴起点数值8、绘制多条折线9、散点图基础示例 matplotlib.pyplot库是…

解析工信部印发的《工业控制系统网络安全防护指南》

文章目录 前言工业控制系统网络安全防护指南一、安全管理&#xff08;一&#xff09;资产管理&#xff08;二&#xff09;配置管理&#xff08;三&#xff09;供应链安全&#xff08;四&#xff09;宣传教育 二、技术防护&#xff08;一&#xff09;主机与终端安全&#xff08;…

tf.linspace时出现Could not find valid device for node.

背景&#xff1a; 在使用tensorflow2.x的时候,当使用tf.linspace的时候会出现如下的报错&#xff1a; import os os.environ[TF_CPP_MIN_LOG_LEVEL] 2import tensorflow as tf from tensorflow import keras import numpy as npdef out():# x tf.constant(np.arange(12).re…

Python爬虫之Splash详解

爬虫专栏&#xff1a;http://t.csdnimg.cn/WfCSx Splash 的使用 Splash 是一个 JavaScript 渲染服务&#xff0c;是一个带有 HTTP API 的轻量级浏览器&#xff0c;同时它对接了 Python 中的 Twisted 和 QT 库。利用它&#xff0c;我们同样可以实现动态渲染页面的抓取。 1. 功…
最新文章