python接口自动化测试--requests使用和基本方法封装

之前学习了使用jmeter+ant做接口测试,并实现了接口的批量维护管理(大概500多条用例),对“接口”以及“接口测试”有了一个基础了解,最近找了一些用python做接口测试的资料,一方面为了学习下如何使用python进行接口测试(如何做出一个简单基础的接口测试框架),另一方面也为了锻炼下如何用python写代码(接触python也有一段时间了,但是每次自己编程总有种提笔忘字的感觉,真是欠练!!)

首先,用python做接口测试,主要用到就是requests库和json库。

1.先看一个简单的demo

1 # -*- coding: UTF-8 -*-2 import requests3 get_url = 'http://localhost:7001/XXX'4 data = {'userCode':'csqy123456','userPWD':'123456'}5 r = requests.get(url=get_url, params=data, timeout=5)   #产生一个名为r的Response对象,可以从这个对象中获取我们想要的信息; #get请求传参数时,使用params关键字  #timeout参数用来设定停止等待响应的时间6 print(r.url)   #返回请求url7 print(r.json())  #以JSON格式解析响应内容8 print(r.status_code)   #返回状态码9 print(r.raise_for_status())   #如果发送了一个错误请求,如404、500等,可以通过raise_for_status()来抛出异常
10 print(r.encoding)  #查看requests使用了什么编码,同时可以用r.encoding属性来改变它
11 print(r.raw)     #获取来自服务器的原始套接字响应
12 print(r.headers)   #服务器返回给我们的响应头信息,也可以在传参时通过headers=XXX来定制请求头
13 print(r.request)   #获取原来创建的Request对象
14 print(r.request.headers)   #发送到服务器的请求头

1 # -*- coding: UTF-8 -*-
2 import requests 
3 post_url = 'http://localhost:7001/XXX'
4 payload2 = {'approveSeq':'6610','userCode':'qyzh123456_88','projName':'测试项目'}
5 r = requests.post(post_url, data=payload2, timeout=1)   #post请求传参数时,使用data关键字
6 print(r.json()) 
7 print(r.status_code)

 2.然后通过函数调用来发送get/post请求


# -*- coding: UTF-8 -*-
import requestsdef send_get(url, data):""" 定义send_get函数,用来接收参数,发送get请求 """r = requests.get(url=url, params=data)result = r.json()return resultdef send_post(url, data):""" 定义send_post函数,用来接收参数,发送post请求 """r = requests.get(url=url, data=data)result = r.json()return resultdef main(url, method, data):""" 定义一个主函数,根据method是get或post,来调用send_post()或send_get() """if method == 'POST':r = send_post(url, data)  # 如果是POST请求,则调用send_post()else:r = send_get(url, data)   # 如果是GET请求,则调用send_get()return r   # 将结果返回出去url = 'http://localhost:7001/XXX'
data = {'controlSeq': '2018118325'
}
demo = main(url, 'GET', data)
print(demo)

3.定义一个类,对post请求和get请求进行封装


run_method.py# -*- coding: UTF-8 -*-import requests
import jsonclass RunMain:"""含有构造器"""def __init__(self, url, method, data=None):self.t = self.run_main(url, method, data)def send_post(self, url, data):r = requests.post(url=url, data=data)result = r.json()return json.dumps(result, indent=2, sort_keys=False, ensure_ascii=False)def send_get(self, url, data):r = requests.get(url=url, params=data)result = r.json()return json.dumps(result, indent=2, sort_keys=False, ensure_ascii=False)# 利用json.dumps将响应数据进行json格式的编码解析# indent=2将输出结果缩进2个字符显示# sort_keys=False,输出结果是否按照关键字排序# json.dumps 序列化时对中文默认使用的ascii编码,ensure_ascii=False才会输出中文# return resultdef run_main(self, url, method, data=None):if method == 'GET':r = self.send_get(url, data)else:r = self.send_post(url, data)return rif __name__ == '__main__':url = 'http://localhost:7001/XXX'data = {'controlSeq': '2018118325'}test = RunMain(url, 'GET', data)  # 因为有构造器 __init__,实例化时要带参数print(test.t)

run_method.py
# -*- coding: UTF-8 -*-import requests
import json
class RunMain:"""无构造器"""def send_get(self, url, data):res = requests.get(url=url, params=data).json()return resdef send_post(self, url, data):res = requests.post(url=url, data=data).json()return resdef run_main(self, url, method, data=None):res = Noneif method == 'GET':res = self.send_get(url, data)else:res = self.send_post(url, data)return resif __name__ == '__main__':url = 'http://192.168.0.53:7001/CommonService/api/control/controlProgress/query.v'data = {'controlSeq': '2018118325'}run = RunMain()  # 先实例化,实例化时不需要带参数print(run.run_main(url, 'GET', data))

 ps.建议在封装运行方法类时,不要加构造器,这样就不需要在实例化时传参,在后面的主函数中从excel中取出参数后再传给类中的方法即可

下面是json.dumps使用前后的对比图

 

 第一目的内容到此结束,一方面简单介绍下requests的用法,另一方面将post和get请求进行基本封装,通过实例化对象进行调用

2023最新Jmeter接口测试从入门到精通(全套项目实战教程)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[每周一更]-(第29期):mac小白入手“MacBook Pro M2“各种问题指南

作为使用15年重度Windows用户,从2008年初中毕业接触电脑,到2012年上大学从事计算机相关学习工作,一直都是忠实的Windows使用者,使用的系统:Microsoft Windows XP、7、10、11, 体验到系统的兼容性和灵活的注册表使用&am…

dbeaver导出数据为excel格式

dbeaver导出excel 目前数据的可选择只有这几种 恰好没有我们需要的excel模式,而我们需要数据一般都需要excel的 所以我们可以通过以下步骤得到我们的excel格式的数据集: 1.直接选csv模式,至于csv有陌生的小伙伴可以理解:CSV(Comma-Separated Values)是…

机器学习之线性回归(Linear Regression)

概念 线性回归(Linear Regression)是机器学习中的一种基本的监督学习算法,用于建立输入变量(特征)与输出变量(目标)之间的线性关系。它假设输入变量与输出变量之间存在线性关系,并试图找到最佳拟合线来描述这种关系。 在简单线性回归中,只涉及两个变量:一个是自变量…

internet download manager 6.42怎么删除卸载,2024最新idm卸载不干净怎么解决

internet download manager 6.42简称为IDM,这是一款非常好用的下载软件,很多小伙伴都在使用。如果后续我们不再需要使用该软件,小伙伴们知道具体该如何将其卸载掉吗,其实卸载方法是非常简单的,只需要进行几个非常简单的…

基于paddlepaddle的FPS最远点采样

什么是FPS最远点采样? 最远点采样(Farthest Point Sampling,FPS)是一种常用的采样算法,主要用于点云数据(如激光雷达点云数据、分子坐标等)的采样。 为了方便解释,定义一下待采样点…

【Spring】11 EnvironmentAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点,其中之一就是 Bean 生命周期中的回调接口。本文将着重介绍一个与环境(Environment)相关…

JVM调优排错专题

JVM调优排错专题 1 打开MAT报错 1 打开MAT报错 下载了linux版本的 MAT 软件,1.15.0版本。 下载地址:https://eclipse.dev/mat/downloads.php 运行时报错了。 错误截图 报错日志 wittasus:/usr/develop/mat$ ./MemoryAnalyzer Unrecognized option:…

如何实现TAB切换时按钮变换样式

实现TAB切换时按钮变换样式的方法 当鼠标移动到TAB标签按钮时,按钮样式发生改变(红底白色加粗字体),当点击按钮切换显示内容后,按钮样式发生改变(黄底黑色加粗字体) 选中按钮“作业批阅结果”,右键>>编辑按钮形状>>编…

黑盒测试中关键截图如何打点

黑盒测试中关键截图如何打点Android黑盒测试过程中如何进行有效的打点是我们经常遇到的问题,我们一般会在脚本内部进行数据打点,也可以使用其他进程录屏或截图。那我们如何选取合适的方式进行打点记录呢?下图是对常用打点方式的统计&#xff…

嵌入式软件测试(黑盒测试)---三年嵌入式软件测试的理解

文章内容为本人这三年来在嵌入式软件测试(黑盒)上的一些积累吧,说起来也挺快的,毕业三年的时间就这样过去了,在两家公司工作过(现在这家是第二家),这几年的测试项目基本都是围绕着嵌…

AI抠图软件哪个好用?推荐这三款抠图工具给你

AI抠图软件哪个好用?你是否听说过AI抠图这个操作呢?简单来说,抠图就是一种对图像进行处理的技术,它的目的是将图片中的某些区域去除或者替换。比如,如果你有一张背景很杂乱的图片,你想把背景去掉&#xff0…

Ubuntu中基础命令使用

前言 以下指令测试来自于Ubuntu18.04 如果有说的不对的,欢迎指正与补充 以下指令为我学习嵌入式开发中使用过最多的指令 目录 前言 1 ls 首先我们进入到Linux操作系统中 2 touch创建一个文件 3 pwd查看当前路径 4 创建目录 5 删除文件 6 cd 目录跳转 0…