转载请注明出处: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:使用类封装接口测试脚本的更多相关文章

  1. Python3 + requests + unittest接口测试

    一.缘 起 笔者最近完成了基于Python3 + requests + unittest的接口测试脚本,故在此做一下记录,于己为复盘,于彼为学习和参考 二.思 路 接口测试无非三步: 首先,造数据 - ...

  2. python3+requests库框架设计03-请求重新封装

    在完成了日志类封装之后,那我们就要对测试基类进行实现,在其中对一些请求再次封装,在项目下新建一个Common文件夹,在文件夹下新建Base_test.py文件,项目结构如下. 具体怎么封装还是要看被测 ...

  3. python mysql redis mongodb selneium requests二次封装为什么大都是使用类的原因,一点见解

    1.python mysql  redis mongodb selneium requests举得这5个库里面的主要被用户使用的东西全都是面向对象的,包括requests.get函数是里面每次都是实例 ...

  4. 学习python的第一个小目标:通过requests+xlrd实现简单接口测试,将测试用例维护在表格中,与脚本分开。

    小白的学习方式:通过确定一个小目标来想办法实现它,再通过笔记来加深印象. 面对标题中的小目标我陷入了思考....嗯,首先实现利用xlrd库来取出想要的用例 首先用表格准备好用例,如图下: 先试下取nu ...

  5. python3+requests库框架设计01-自动化测试框架需要什么?

    什么是自动化测试框架 关于自动化测试框架的定义有很多,在我大致理解下就是把能实现不同功能的软件组合在一起,实现特定的目的,这就是一个简单的自动化测试框架. 接口自动化测试框架核心无非是选择 一个用来编 ...

  6. 【python3+request】python3+requests接口自动化测试框架实例详解教程

    转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...

  7. python3+requests:接口自动化测试(二)

    转载请注明出处:https://www.cnblogs.com/shapeL/p/9188495.html 前言:上篇文章python3+requests+unittest:接口自动化测试(一):ht ...

  8. Python nose单元测试框架结合requests库进行web接口测试

    [本文出自天外归云的博客园] 之前写过一篇关于nose使用方法的博客.最近在做一元乐购产品的接口测试,结合着python的requests库可以很方便的进行web接口测试并生成测试结果.接口测试脚本示 ...

  9. C++基础——类封装简单示例

    一.前言 在IC前端设计/验证领域,只会HDL远远不够.目前大多数项目使用已开发好的系统架构和IP Core,因此设计部分的工作量慢慢向系统集成和验证方向转移.而在集成和验证过程中,往往以各种脚本和面 ...

随机推荐

  1. 让你的动画不再生硬 Android插值器Interpolator使用秘籍

    有木有厌烦生硬的动画效果,想不想让你的动画变得圆滑且 欢迎收看本期的走进科学... 停,停,别打了,(.﹏.*) 我错了-- 我们要达到的效果: 先来回顾一下普通动画的用法吧. * 缩放动画 Scal ...

  2. EasyUI中tree,Datagrid,pagenation的使用EasyUI中Datagrid和pagenation进行关联时,再次点击pagenation时让表格数据显示的问题

    // 获取选中一行的情况,下面的一个参数可以代表一个DataGridfunction getSelected(dialogEle,dataFileTextEle) { // 获取选中一行的情况. va ...

  3. 【Visual C++】游戏编程学习笔记之四:透明动画实现

    本系列文章由@二货梦想家张程 所写,转载请注明出处. 本文章链接:http://blog.csdn.net/terence1212/article/details/44224963 作者:ZeeCod ...

  4. 菜鸟玩云计算之十七:RHEL克隆虚拟机后改变网卡地址

    菜鸟玩云计算之十七:RHEL克隆虚拟机后改变网卡地址 (一)更改hostname # vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=your-vm ...

  5. ITU-T G.1081 IPTV性能监测点 (Performance monitoring points for IPTV)

    ITU-T 建议书 G.1081 IPTV性能监测点 Performance monitoring points for IPTV Summary Successful deployment of I ...

  6. akamai:与看视频广告等待相比,用户更不能忍受缓冲等待

    根据akamai的研究,网络视频广告的位置对于完成率的影响最大,间插广告的完成率比前贴片广告要高18.1%,而前贴片广告比后贴片广告的完成率要高14.3%. 网站的重复访客的视频广告观看完成率比一时兴 ...

  7. linux进程的介绍和管理

    概述 -   在linux 中,每个执行的程序都称为一个进程,每一个进程都分配一个ID号 -   每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程,例如www服务器 -   每个进程都可 ...

  8. 安卓笔记--Style的继承

    比如想要重写一个对话框的style <style name="Theme_dialog" parent="@android:style/Theme.Dialog&q ...

  9. PHP获取指定地区的天气

    在开发网站的时候用到天气查询,由于是基于Wordpress的 所以有很多限制,先建一个[weather.php]的文件,然后看代码: <?php //获取天气 $url = 'http://m. ...

  10. Android studio统计项目总行数

    有时候在项目开发中会用到统计项目的总行数功能,今天就教大家如何利用studio进行总行数的统计: 1.打开要统计总行数的项目,按住Ctrl+Shift+A(或者点击导航栏的Help->Find ...