python web api 自动化测试_基于Python + requests 的web接口自动化测试框架
之前采用JMeter进行接口测试,每次给带新人进行培训比较麻烦,干脆用python实现,将代码和用例分离,易于维护。
项目背景
公司的软件采用B/S架构,进行数据存储、分析、管理
工具选择
python开发的速度很快,且容易上手,丰富的第三方库,大大加快了开发速度和难度,自己开发一个简单的框架,优点是足够灵活,可以随时根据需求进行变更
框架思路(unittest)
考虑可重用性和可维护性,针对测试人员编写测试用例的方便性,采用数据驱动的设计方式,将数据分层出来,与业务逻辑剥离,测试人员就可以通过数据文件专注的写测试用例,不用关注代码编写,提高了效率
将测试的结果生成HTML格式的测试报告
模块介绍
# 封装的方法
Package
Base.py 请求(POST、GET)
Unit.py 工具类(断言、获取response数据)
# 测试报告
Report
# 接口场景用到的资源(图片、视频)
Resource
# 测试用例
Test_case
TestCase_**.py
…
TestCase_**.py
# unittest框架
all_test.py (包括生成html格式的测试报告)
# 实现在外部配置文件中配置请求接口URL、参数
pageMessage.py
代码介绍
封装的POST请求,代码如下:
def r_get(url, payload={}):
""" GET 请求 url:接口,payload:参数 """
response = ''
try:
# 根据传入的参数长度判断是否发送参数
if payload.__len__() == 0:
r = s.get(url, headers=heads)
else:
r = s.get(url, params=payload, headers=heads)
response = json.loads(r.text)
except Exception as err:
print err
return response
封装的GET请求,代码如下:
def r_post(url, payload={}, tp=''):
""" POST 请求 url:接口,payload:参数 ,tp:类型"""
try:
# 根据传入的参数长度判断是否发送参数
if payload.__len__() == 0:
r = s.post(url, headers=heads)
else:
# 根据传入的参数类型判断是否发送json格式的
if tp == 'json': # json数据
r = s.post(url, data=json.dumps(payload), headers=heads)
else:
r = s.post(url, data=payload, headers=heads)
response = json.loads(r.text)
except Exception as err:
print err
return response
获取response响应数据,代码如下:
def get_message(text, key):
""" 获取返回报文的数据 text:报文内容,key: 获取参数关键字 """
value = ''
try:
data = text['data']
# print '报文格式:', type(data)
if type(data) == list:
da = data[0] # 报文格式
value = da[key]
else:
value = data[key]
value = str(value)
print 'Message: ' + key + '=' + value
except Exception as err:
print "Error:", (err)
return value
断言,代码如下:
def assert_case(url, text, cod, mes):
""" 断言,判断 code 和 message """
code, message = '', ''
try:
code = text['code']
message = text['message']
assert_that(str(cod)).is_equal_to(str(code))
assert_that(str(mes)).is_equal_to(str(message))
except Exception, e:
print url + ' code: ' + str(code) + ' message:' + str(message) + ' ' + str(e)
python web api 自动化测试_基于Python + requests 的web接口自动化测试框架相关推荐
- python通信自动化测试_基于Python的无线通信设备自动化测试软件的研制
基于Python的无线通信设备自动化测试软件的研制 中国电子科技集团公司第十研究所 冯启俊 [期刊名称]<电子世界> [年(卷),期]2019(000)015 [总页数]2 无线通信设备的 ...
- python语法元素测试_基于python全局设置id 自动化测试元素定位过程解析
背景: 在自动化化测试过程中,不方便准确获取页面的元素,或者在重构过程中方法修改造成元素层级改变,因此通过设置id准备定位. 一.python准备工作: 功能:用自动化的方式进行批量处理. 比如,你想 ...
- 基于python的智能家居_基于Python的智能家居自动化测试脚本设计及实现
投稿网址 http:www.VideoE.cn|<电视技术>第39 卷第5 期(总第458 期) 117 [本文献信息]沈杰,潘科,刘昕,等. 基于 Python 的智能家居自动化测试 ...
- python 无头浏览器多线程_基于Python, Selenium, Phantomjs无头浏览器访问页面
引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...
- python数据获取就业方向_基于Python的就业岗位数据获取与预处理
林长谋 黄玮 摘要:互联网数据获取及分析是当前数据科学的一個重要部分.该文针对互联网中就业岗位数据获取与分析的过程基于Python构建了网络爬虫.并在通爬虫获取网络数据的基础上,对所获得的就业岗位数据 ...
- 用python做炒股软件-python程序源码_基于python的炒股软件
股票模拟交易系统设计与实现 不但能够进行界面的设计,还可以实现各个窗口的关联,通过WPF实现和其余窗口的关联,而且WPF中的类不但能够和其中一个窗口进行关联,还可以跟许多功能操作接口,WPF在对窗口对 ...
- python人脸识别库_基于Python的face_recognition库实现人脸识别
Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...
- python编程控制机器人_基于Python开发的微信图灵机器人
在过去的几个月中,由于在新生群中回答问题费时费力,同时又有许多重复而又有固定答案的回答,我受到一些知乎文章的启发,维护了一个基于itchat的群聊机器人.从刚开始接入图灵机器人时只会尬聊的机器人,之后 ...
- 基于python的房地产数据分析_基于Python的数据分析
转载 | CSDN 编辑 | 雷课小雷 下面来介绍一下基于Python的数据分析,主要介绍数据分析的概念.数据分析流程.Python优势.常用模块的用途以及使用Python进行数据分析的学习方法及步骤 ...
- python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现
从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...
最新文章
- 海报推广神器:活码加多级加密跳转防封双重保护
- javaul材质包下载_只需一个水桶包 你就能装满时髦
- Kafka 批量消费消息
- laravel无法运行php,Laravel:php artisan服务无法启动
- Libra 骗局来了;嫦娥五号将利用 AI 确定登陆位置;GitHub 移除色情应用 DeepNude 的开源库 | 开发者周刊...
- 关于js的冒泡--新手踩坑案例
- 后缀数组 倍增法详解
- 华为支付试水!移动支付会打破支付宝、微信双寡头的格局吗?
- 概率算法(算法分析与设计)
- 2017 年度十大最受欢迎的浏览器,你在用哪一款?
- 苹果3D物体捕捉Object Capture功能实现教程
- vue中使用Lodop调用打印机打印条形码
- 供需关系——需求与满意度
- Google v8引擎(一)执行流程
- 桌面程序加sql数据库服务器,在桌面上安装和部署 (SQL Server Compact)
- 关于自制的《航空学报》latex模板(非官网模板)
- html5艺术字怎么插入,word文档怎么插入艺术字和图片
- 在表中插入数据的SQL语句
- 21年的第一场Gopher Meetup,北京我们来了!
- C# Winform中集成Kodak实现调用扫描仪的功能
热门文章
- 智能红外遥控器(一):功能简介
- java终结者怎么样_终结者6:丹妮与约翰康纳相比怎么样?她绝对也是个好领袖!...
- jar文件 反编译(IDEA环境)
- [C++] 使用<random>头文件生成均匀分布、正态分布的数据
- Java数据结构之八大排序算法
- delphi开发网页神器,安装unigui1.9
- 支付宝API接入,网页支付接口。
- WPF程序加入3D模型
- 【ASP.NET】VS2015连接SQL Server数据库,实现登录、注册
- JAVA毕业设计计算机office课程平台计算机源码+lw文档+系统+调试部署+数据库