python3+requests:使用类封装接口测试脚本
转载请注明出处:https://www.cnblogs.com/shapeL/p/9045439.html
前言:接口测试用例较多,我们不可能每个用例都写一次requests,get或者requests,post等,所以对共用方法要进行封装处理
第一次修改:将get请求和post请求单独定义出来,使用过程中根据不同类型的请求直接调用对应的方法
import requests
import json def send_post(url,data,headers):
response = requests.post(url=url,data=data,headers=headers).json()
return json.dumps(response,sort_keys=True,indent=4) def send_get(url,data,headers):
response = requests.get(url=url,data=data,headers=headers).json()
return json.dumps(response,sort_keys=True,indent=4) def run_main(url,headers,method,data=None):
respose = None
if method == 'GET':
respose = send_get(url,data,headers)
else:
respose = send_post(url,data,headers)
return respose url = 'https://...'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
print(run_main(url,headers,method='POST'))
第二次修改:用class进行封装,主函数中创建一个实例run来调用类中的方法
import requests
import json
class Runmain:
def send_post(self,url,data,headers):
response = requests.post(url=url,data=data,headers=headers).json()
return json.dumps(response,sort_keys=True,indent=) def send_get(self,url,params,headers):
response = requests.get(url=url,params=params,headers=headers).json()
return json.dumps(response,sort_keys=True,indent=) def run_main(self,url,params,data,headers,method):
respose = None
if method == 'GET':
respose = self.send_get(url,params,headers)
else:
respose = self.send_post(url,data,headers)
return respose if __name__ == '__main__':
run = Runmain()
url = 'https://...'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
print(run.run_main(url,params=None,data=None,headers=headers,method='POST'))
第三次修改:第二次修改,每次都需要实例化后再调用对应的方法;
改进办法:使用__init__方法实现:只要实例化类时候就会调用__init__方法
import requests
import json
class Runmain:
def __init__(self,url,params,data,headers,method):
self.response = self.run_main(url,params,data,headers,method) def send_post(self,url,data,headers):
response = requests.post(url=url,data=data,headers=headers).json()
return json.dumps(response,sort_keys=True,indent=) def send_get(self,url,params,headers):
response = requests.get(url=url,params=params,headers=headers).json()
return json.dumps(response,sort_keys=True,indent=) def run_main(self,url,params,data,headers,method):
respose = None
if method == 'GET':
respose = self.send_get(url,params,headers)
else:
respose = self.send_post(url,data,headers)
return respose if __name__ == '__main__':
url = 'https://...'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
run = Runmain(url,params=None,data=None,headers=headers,method='POST')
print(run.response)
备注:对python中类,实例不了解的同学,可以参考:
http://yangcongchufang.com/%E9%AB%98%E7%BA%A7python%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80/python-object-class.html
python3+requests:使用类封装接口测试脚本的更多相关文章
- Python3 + requests + unittest接口测试
一.缘 起 笔者最近完成了基于Python3 + requests + unittest的接口测试脚本,故在此做一下记录,于己为复盘,于彼为学习和参考 二.思 路 接口测试无非三步: 首先,造数据 - ...
- python3+requests库框架设计03-请求重新封装
在完成了日志类封装之后,那我们就要对测试基类进行实现,在其中对一些请求再次封装,在项目下新建一个Common文件夹,在文件夹下新建Base_test.py文件,项目结构如下. 具体怎么封装还是要看被测 ...
- python mysql redis mongodb selneium requests二次封装为什么大都是使用类的原因,一点见解
1.python mysql redis mongodb selneium requests举得这5个库里面的主要被用户使用的东西全都是面向对象的,包括requests.get函数是里面每次都是实例 ...
- 学习python的第一个小目标:通过requests+xlrd实现简单接口测试,将测试用例维护在表格中,与脚本分开。
小白的学习方式:通过确定一个小目标来想办法实现它,再通过笔记来加深印象. 面对标题中的小目标我陷入了思考....嗯,首先实现利用xlrd库来取出想要的用例 首先用表格准备好用例,如图下: 先试下取nu ...
- python3+requests库框架设计01-自动化测试框架需要什么?
什么是自动化测试框架 关于自动化测试框架的定义有很多,在我大致理解下就是把能实现不同功能的软件组合在一起,实现特定的目的,这就是一个简单的自动化测试框架. 接口自动化测试框架核心无非是选择 一个用来编 ...
- 【python3+request】python3+requests接口自动化测试框架实例详解教程
转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...
- python3+requests:接口自动化测试(二)
转载请注明出处:https://www.cnblogs.com/shapeL/p/9188495.html 前言:上篇文章python3+requests+unittest:接口自动化测试(一):ht ...
- Python nose单元测试框架结合requests库进行web接口测试
[本文出自天外归云的博客园] 之前写过一篇关于nose使用方法的博客.最近在做一元乐购产品的接口测试,结合着python的requests库可以很方便的进行web接口测试并生成测试结果.接口测试脚本示 ...
- C++基础——类封装简单示例
一.前言 在IC前端设计/验证领域,只会HDL远远不够.目前大多数项目使用已开发好的系统架构和IP Core,因此设计部分的工作量慢慢向系统集成和验证方向转移.而在集成和验证过程中,往往以各种脚本和面 ...
随机推荐
- Android调用binder实现权限提升-android学习之旅(81)
当进程A权限较低,而B权限较高时,容易产生提权漏洞 fuzz测试的测试路径 First level Interface是服务 Second level Interface是服务中对应的接口 1.首先获 ...
- Android 自定义view --圆形百分比(进度条)
转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50334595 注:本文由于是在学习过程中写的,存在大量问题(overdraw onDr ...
- 02_Nginx基本配置与参数说明 + 辅助命令
Nginx基本配置与参数说明,下面是nginx.conf配置文件 #运行用户 #user nobody; worker_processes 2; #全局错误日志及PID文件 #error_l ...
- Rxjava + retrofit + dagger2 + mvp搭建Android框架
最近出去面试,总会被问到我们项目现在采用的什么开发框架,不过据我的经验网络框架(volley)+图片缓存(uIl)+数据库(orm)+mvp,不过现在这套框架比较好了,现在采用什么呢?Rxjava + ...
- Linux打包命令 - tar
上一篇文章谈到的命令大多仅能针对单一文件来进行压缩,虽然 gzip 与 bzip2 也能够针对目录来进行压缩, 不过,这两个命令对目录的压缩指的是『将目录内的所有文件 "分别" 进 ...
- HashMap是无序的
一. 说明 HashMap是基于哈希表Map的实现.设计初衷主要是为了解决键值(key-value)对应关联的,HashMap的优势是可以很快的根据键(key)找到该键对应的值(value),但是我们 ...
- linux终端用户登录流程
终端可以通过连线,猫或网络(ssh,telnet,rlogin)和unix相连. 对于每个物理终端端口,都有一个getty监视,getty是由init程序启动的. getty收到用户名->调用l ...
- db2字段修改
db2表字段修改 1:删除字段非空属性alter table XXX alter column XXX drop not null 2:添加字段非空属性alter table XXX alter co ...
- 途牛java实习面试(失败)
一进去让自己介绍.简单介绍了一下.然后让我自己说说框架.问题太大一紧张卡住了. 然后面试官开始问,让我介绍多线程,我就简单介绍了多线程.然后问我有没有做过多线程的项目,我说没有. 问了MySQL的锁和 ...
- minimun depth of binary tree
Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...