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,因此设计部分的工作量慢慢向系统集成和验证方向转移.而在集成和验证过程中,往往以各种脚本和面 ...
随机推荐
- STL字符串常用方法扩展
前言 STL作为一个标准模版库,很多容器和算法都是很实用的,接口也相对比较友好,而且在实现上也比较轻量级.相对boost来说,要轻量得多,相对loki来说,使用的模版语法不会那么晦涩难懂,基本还是能看 ...
- hibernate关联对象的增删改查------查
本篇博客是之前博客hibernate关联对象的增删改查------查 的后继,本篇代码的设定都在前文已经写好,因此读这篇之前,请先移步上一篇博客 //代码片5 SessionFactory sessi ...
- mysql进阶(十九)SQL语句如何精准查找某一时间段的数据
SQL语句如何精准查找某一时间段的数据 在项目开发过程中,自己需要查询出一定时间段内的交易.故需要在sql查询语句中加入日期时间要素,sql语句如何实现? SELECT * FROM lmapp.lm ...
- 【一天一道LeetCode】#29. Divide Two Integers
一天一道LeetCode系列 (一)题目 Divide two integers without using multiplication, division and mod operator. If ...
- saiku 网站简介
Saiku web:http://docs.analytical-labs.com/saiku/documentation/2013/08/15/datasources.html Click &quo ...
- C# FTPClient--FTP操作帮助类,上传下载,文件,目录操作
FROM :http://www.sufeinet.com/forum.php?mod=viewthread&tid=1736&extra=page%3D1%26filter%3Dty ...
- 【Java编程】Java中的大整数计算
在上一篇文章中,我们实现了c语言中的大整数的运算,并且用Miller-Rabin算法实现了对大素数的测试.本来我准备用Java代码实现大整数的运算,查了一下资料发现Java中java.math的Big ...
- Web应用程序设计十个建议
原文链接: Top 10 Design Tips for Web Apps 原文日期: 2014年04月02日 翻译日期: 2014年04月11日 翻译人员: 铁锚 现代web应用通常在互联网上通过 ...
- TCP的核心系列 — 重传队列的更新和时延的采样(一)
重传队列实际上就是发送队列(sk->sk_write_queue),保存着发送且未确认的数据段. 当有新的数据段被确认时,需要把这些段从重传队列中删除,同时更新一些变量,包括 packets_o ...
- Unity PUN插件多人在线同步角色坐标旋转角度和动作
用PUN插件的话,就在OnJoinedRoom()回调函数里,表示加入房间,可以实例化角色,GameObject go=PhotonNetwork.Instantiate(prefabPlayer.n ...