之前采用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接口自动化测试框架相关推荐

  1. python通信自动化测试_基于Python的无线通信设备自动化测试软件的研制

    基于Python的无线通信设备自动化测试软件的研制 中国电子科技集团公司第十研究所 冯启俊 [期刊名称]<电子世界> [年(卷),期]2019(000)015 [总页数]2 无线通信设备的 ...

  2. python语法元素测试_基于python全局设置id 自动化测试元素定位过程解析

    背景: 在自动化化测试过程中,不方便准确获取页面的元素,或者在重构过程中方法修改造成元素层级改变,因此通过设置id准备定位. 一.python准备工作: 功能:用自动化的方式进行批量处理. 比如,你想 ...

  3. 基于python的智能家居_基于Python的智能家居自动化测试脚本设计及实现

    投稿网址 http:www.VideoE.cn|<电视技术>第39 卷第5 期(总第458 期) 117 [本文献信息]沈杰,潘科,刘昕,等. 基于 Python 的智能家居自动化测试 ...

  4. python 无头浏览器多线程_基于Python, Selenium, Phantomjs无头浏览器访问页面

    引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...

  5. python数据获取就业方向_基于Python的就业岗位数据获取与预处理

    林长谋 黄玮 摘要:互联网数据获取及分析是当前数据科学的一個重要部分.该文针对互联网中就业岗位数据获取与分析的过程基于Python构建了网络爬虫.并在通爬虫获取网络数据的基础上,对所获得的就业岗位数据 ...

  6. 用python做炒股软件-python程序源码_基于python的炒股软件

    股票模拟交易系统设计与实现 不但能够进行界面的设计,还可以实现各个窗口的关联,通过WPF实现和其余窗口的关联,而且WPF中的类不但能够和其中一个窗口进行关联,还可以跟许多功能操作接口,WPF在对窗口对 ...

  7. python人脸识别库_基于Python的face_recognition库实现人脸识别

    Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...

  8. python编程控制机器人_基于Python开发的微信图灵机器人

    在过去的几个月中,由于在新生群中回答问题费时费力,同时又有许多重复而又有固定答案的回答,我受到一些知乎文章的启发,维护了一个基于itchat的群聊机器人.从刚开始接入图灵机器人时只会尬聊的机器人,之后 ...

  9. 基于python的房地产数据分析_基于Python的数据分析

    转载 | CSDN 编辑 | 雷课小雷 下面来介绍一下基于Python的数据分析,主要介绍数据分析的概念.数据分析流程.Python优势.常用模块的用途以及使用Python进行数据分析的学习方法及步骤 ...

  10. python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现

    从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...

最新文章

  1. 海报推广神器:活码加多级加密跳转防封双重保护
  2. javaul材质包下载_只需一个水桶包 你就能装满时髦
  3. Kafka 批量消费消息
  4. laravel无法运行php,Laravel:php artisan服务无法启动
  5. Libra 骗局来了;嫦娥五号将利用 AI 确定登陆位置;GitHub 移除色情应用 DeepNude 的开源库 | 开发者周刊...
  6. 关于js的冒泡--新手踩坑案例
  7. 后缀数组 倍增法详解
  8. 华为支付试水!移动支付会打破支付宝、微信双寡头的格局吗?
  9. 概率算法(算法分析与设计)
  10. 2017 年度十大最受欢迎的浏览器,你在用哪一款?
  11. 苹果3D物体捕捉Object Capture功能实现教程
  12. vue中使用Lodop调用打印机打印条形码
  13. 供需关系——需求与满意度
  14. Google v8引擎(一)执行流程
  15. 桌面程序加sql数据库服务器,在桌面上安装和部署 (SQL Server Compact)
  16. 关于自制的《航空学报》latex模板(非官网模板)
  17. html5艺术字怎么插入,word文档怎么插入艺术字和图片
  18. 在表中插入数据的SQL语句
  19. 21年的第一场Gopher Meetup,北京我们来了!
  20. C# Winform中集成Kodak实现调用扫描仪的功能

热门文章

  1. 智能红外遥控器(一):功能简介
  2. java终结者怎么样_终结者6:丹妮与约翰康纳相比怎么样?她绝对也是个好领袖!...
  3. jar文件 反编译(IDEA环境)
  4. [C++] 使用<random>头文件生成均匀分布、正态分布的数据
  5. Java数据结构之八大排序算法
  6. delphi开发网页神器,安装unigui1.9
  7. 支付宝API接入,网页支付接口。
  8. WPF程序加入3D模型
  9. 【ASP.NET】VS2015连接SQL Server数据库,实现登录、注册
  10. JAVA毕业设计计算机office课程平台计算机源码+lw文档+系统+调试部署+数据库