项目背景

  • 公司内部的软件采用B/S架构,目的是进行实验室的数据存储、分析、管理。
  • 大部分是数据的增删改查,但是由于还在开发阶段,所以UI的变化非常快,难以针对UI进行自动化测试,那样会消耗大量的精力与时间维护自动化脚本,对于小团队来说就得不偿失了。

  针对此种情况,选用接口测试较为有效。

工具选择

  针对接口测试的自动化工具也很多,例如Soup UIPostmanrobotframework,甚至jmeter这样的性能测试工具都可以进行接口测试。

  robotframework测试框架有很多的第三方库可以使用,采用的是填表的方式进行,较容易上手,但是无法深入底层的了解客户端与服务器的交互过程。jmeter这样的专注性能测试的工具,进行接口测试,有点大材小用的感觉而且无法生成测试报告。但是这些工具灵活性不够,也不完全适用于被测系统。

  综上考虑,决定自己开发一个简单的框架,优点是足够灵活,可以随时根据需求进行变更,后台使用的是python+flask进行开发,此次选用python 2.7.11进行框架的开发,python开发的速度很快,且容易上手,丰富的第三方库,大大加快了开发速度和难度。

框架思路

  由于是框架,所以要考虑到框架的可重用性和可维护性。

  其次,需要考虑到测试人员编写测试用例的方便性,采用数据驱动的设计方式,将数据分层出来,与业务逻辑剥离。这样测试人员就可以通过数据文件专注的写测试用例,不用关注代码编写,提高了效率。此次框架采用基本的excel进行数据管理。通过对excel 的读取获得数据。

  之后将测试的结果生成HTML格式的测试报告发送给相关开发人员。

第三方库介绍

Requests

python中有许多针对http的库,例如自带的urllib2,但是自带的urllib2编写起来实在是太费精力,所以采用号称"HTTP forHumans"的requests库。

xlrd

xlrd使得python可以方便的对excel文件进行读写操作,此次通过xlrd读取excel文件中的测试数据。

以上第三方库都可以通过pip直接安装或者通过pypi下载源码包安装。

模块介绍

get_conf:

读取配置文件,获得邮件发送的配置信息,如smtpserver、receiver、sender等。

md5Encode:

部分数据采用md5加密后传输,所以需要把从excel读取的数据进行md5加密。

sendMail:

当测试完成后,将测试报告自动的发送给相关开发人员。

runTest:

此部分读取excel中的数据,调用下方的interfaceTest方法,保存interfaceTest返回的信息。

interfaceTest:

将runTest读取的excel数据作为入参,执行接口测试,并将后台返回的信息返回给runTest

Excel的文件格式如下图,API Purpose记录接口的名称,API Host记录主机地址,Request Methon记录请求方式,可以选择GET或者POST。

Request Data就是构造的测试数据,这里需要注意其格式的书写。

Check Point是检查点的设置,当获得数据后,需要跟检查点的数据进行比对,如果符合,说明测试成功,反之失败。

配置文件的格式如下图:

在这里可以设置邮件发送人、接收者、smtp服务器地址以及用户名密码。需要根据实际情况进行改变。

代码实现


  由于所有的操作必须在系统登录之后进行,一开始没有注意到cookie这一点,每读取一个测试用例,都会新建一个session,导致无法维护上一次请求的cookie。然后将cookie添加入请求头中,但是第二个用例仍然无法执行成功。后来用fiddler抓包分析了一下,发现cookie的值竟然是“每一次操作后都会变化的!!!”

  所以只能通过session自动维护cookie。

  在interfaceTest函数中,返回三个值,分别是HTTP CODE,HTTP返回值与session。再将上一次请求的session作为入参传入interfaceTest函数中,在函数内部判断session是否存在,如果不为None,那么直接利用传入的session执行下一个用例,如果为None,那么新建一个session。

不足之处

1.   框架十分简陋,只是简单想法的实现,对于编码的细节没有完善。

2.   HTML的测试报告书写起来比较麻烦,可以考虑引入第三方库进行HTML测试报告的书写,将生成的HTML文件作为附件发送。

3.   只是针对公司内部的软件,换用其他平台就不适用,需要修改源码。

基于Python的接口自动化测试框架相关推荐

  1. 基于pytest搭建接口自动化测试框架,提供源码

    基于pytest搭建接口自动化测试框架 框架整体介绍和方法教程 新框架(比这个功能多了很多,用例使用yaml编写) 源码框架结构 xmind项目结构介绍 源码地址 使用教程 1.全局变量设置和使用 2 ...

  2. python+requests接口自动化测试框架实例详解教程(米兔888)

    来源:https://my.oschina.net/u/3041656/blog/820023 源码:https://pan.baidu.com/s/1lgIEToiczTvvjy--p-N20g 提 ...

  3. python+requests接口自动化测试框架实例详解教程(米兔888)【适合半年或一年以上天天做自动化经验的大神下载使用】

    来源:https://my.oschina.net/u/3041656/blog/820023 源码地址,需要的回复评论留下邮箱 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测 ...

  4. python+requests接口自动化测试框架实例详解教程

    前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自 ...

  5. 全网独一份python+requests接口自动化测试框架实例详解教程

    前言 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接 ...

  6. python自动化测试脚本后端_基于 python 的接口自动化测试

    本文来自作者:孙彦辉 在 GitChat 上精彩分享,「阅读原文」看看大家和作者交流了哪些问题 一.简介 本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势: 然后简单讨论了一下接口测试框架 ...

  7. python:接口自动化测试框架优化版

    最近文章一直都是python的第三方库使用及爬虫的知识,针对自动化测试的优化版本也没有及时发布出来,今天主要抽时间整理了一下,罗列了运行流程及项目工程目录. 所提供的框架仅供参考,中间还有很多不足之处 ...

  8. 基于 python 的接口自动化测试,让你轻松掌握接口自动化

    目录 目录 一.简介 ​编辑二.引言 三.环境准备 四.测试接口准备 接口信息 五.编写接口测试 六.优化 封装接口调用 一.简介 本文从一个简单的登录接口测试入手,一步步调整优化接口调用姿势: 然后 ...

  9. 基于python的界面自动化测试-基于python的接口自动化测试+ddt数据驱动

    在测试接口时,一个接口会先写好测试用例,这个用例主要针对功能,传入参时考虑到各种场景,正常的,异常的,如:参数缺省,参数传一个六位数字写用例时考虑边界情况等. 一个接口设计用例时有可能会十几条到几十条 ...

最新文章

  1. 使用VS2005进行代码覆盖率分析
  2. typedef和define具体的详细区别
  3. html中使用地图和area,根据参数对area的颜色进行改变,AE考试题
  4. 可能是基于 Hooks 和 Typescript 最好的状态管理工具
  5. 创建Qt对话框一般步骤
  6. 项目文档管理的一些想法
  7. C#开源类库推荐:拼多多开放平台SDK,开源免费,支持.NET Core!
  8. 詹金斯的Maven报告
  9. js基础教程学习笔记
  10. 微信小程序 全局共享数据
  11. Intel缓存控制相关的寄存器
  12. js (jQuery) 之 取值
  13. 送几本~ 648页全彩+395张插图 机器翻译 扛鼎之作
  14. 用Docker快速搭建一个博客网站,很简单的嘛~
  15. springmvc错误java.lang.IllegalArgumentException
  16. newInstance() 和 new 有什么区别
  17. 《Shell脚本学习指南》
  18. 计算机分区的优点,NTFS分区格式的优点及其转换
  19. 无线WIFI系统如何解决短信认证功能?
  20. Shrinkage Loss

热门文章

  1. Gateway源码分析
  2. 框架源码专题:Mybatis的一级缓存、二级缓存是什么?有什么作用?
  3. 【实战】K8S部署Nacos微服务
  4. 云函数与函数式编程思想结合会产生什么?
  5. Java高并发编程详解系列-ThreadAPI简单说明
  6. java标签库jstl-el表达式介绍使用配置手册_JAVA EE 实验报告EL表达式和jstl标签库的使用...
  7. 【SpringMVC框架】springmvc入门程序-环境搭建
  8. Go1.18 新特性:高效复制,strings, bytes 库新增 Clone 功能
  9. 趣说技术 | 用MQ 能完全替代 RPC 调用?
  10. 关于Feign的几个问题