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,因此设计部分的工作量慢慢向系统集成和验证方向转移.而在集成和验证过程中,往往以各种脚本和面 ...
随机推荐
- 【一天一道LeetCode】#55. Jump Game
一天一道LeetCode系列 (一)题目 Given an array of non-negative integers, you are initially positioned at the fi ...
- Lucene 自动补全
package com.pera.suggestion; import java.io.IOException; import java.io.Reader; import java.util.Arr ...
- [面试算法题]比较二叉树异同-leetcode学习之旅(5)
问题描述 Given two binary trees, write a function to check if they are equal or not. Two binary trees ar ...
- 【一天一道LeetCode】#23. Merge k Sorted Lists
一天一道LeetCode系列 (一)题目 Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...
- 《UNIX网络编程 卷1》之"学习环境搭建"(CentOS 7)
<UNIX网络编程 卷1>的源码可以从www.unpbook.com下载得到.解压之后的目录为unpv13e. 详细步骤 编译 进入unpv13e目录,按如下步骤编译: ./configu ...
- 仿百度壁纸客户端(二)——主页自定义ViewPager广告定时轮播图
仿百度壁纸客户端(二)--主页自定义ViewPager广告定时轮播图 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度壁纸客户端( ...
- Java-ServletInputStream
import java.io.InputStream; import java.io.IOException; /** * Provides an input stream for reading b ...
- sql的having深入理解;group by只返回一组的一行,compute更好
Having where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行. having 子句的作用是 ...
- iOS雷达图 iOS RadarChart实现
实现效果 刚拿到设计稿的时候大概看了一眼,当时心里想着放张背景图,然后计算下相应点的坐标,在最上面画一层就OK了,其实一开始实现的时候也确实是这么做的,然后我就日了狗了,发现设计稿上多层五边形的间隔不 ...
- Linux进程通信学习总结
http://blog.csdn.net/xiaoweibeibei/article/details/6552498 SYSV子系统的相关概念 引用标识符:引用标识符是一个整数,表示每一个SYSV ...