当前位置: 首页 > 编程日记 > 正文

接口自动化测试框架

现在市面上做接口测试的工具很多,比如Postman,soapUI, JMeter, Python+ unittest等等,各种不同的测试工具拥有不同的特色。但市面上的接口测试工具都存在一个问题就是无法完全吻合的去适用没一个项目,比如数据的处理,加密方式的选择,业务逻辑的处理等等,因为自己编写一个框架能够很好的契合自己的项目。本次选用Python+ unittest方案。这个方案需要测试者具有一定的代码能力,通过利用Python自带的PyUnit也就是我们说的:unittest自动化框架,进行接口自动化测试框架的二次开发。

特点:框架稳定,依托于Python强大的库进行各种形式的接口测试,如基于http协议的接口可以利用urlib,urlib2,requests等库进行设计测试。(现在公司的接口基本都是基于http协议的,因此调用这三个库可以完全的实现接口自动化)同时利用JSON于测试参数进行配置,实现整体测试框架的参数驱动化。

2.框架介绍

整个框架主要分为三层:

  1. 框架层: 核心层+应用层
  2. 核心层:为底层的基础代码
  3. 应用层:为核心层的对外的封装
    框架结构图如下:

整个框架结构如上图,console包为整个框架的入口,通过这里来启动整个框架运作。lib和case为框架的核心层和应用层。

lib里面为测试框架中所有的底层代码

包括:断言方法(resultprocess),权鉴,配置文件,自动生成脚本,测试数据的获取,数据类型的转换,加密的处理,接口测试的初始化,发送邮件,生成测试报告等等。

case 包里包括server和testcase两个包,server包里面为接口业务串联,testcase为单个接口测试。

单个接口测试用例例:

单个server用例示例:

说明:

  1. import unittest   //导入测试框架
  2. 定义一个继承自unittest.TestCase的测试用例类
  3. 定义setUp和tearDown,在每个测试用例前后做一些辅助工作。
  4. 定义测试用例,名字以test开头。
  5. 一个测试用例应该只测试一个方面,测试目的和测试内容应很明确。主要调用assertEqual、assertRaises等断言方法判断程序执行结果和预期值是否相符。
  6. 调用unittest.main()启动测试
  7. 如果测试未通过,会输出相应的错误提示。如果测试全部通过则不显示任何东西,这时可以添加-v参

data数据包:

log: 主要用于存放脚本运行时生成的log文件

report :用于存放报告文件,为xml文件

case_data :单个接口测试的数据,为json文件

server-data : 接口业务串联的数据,为excel文件

case_data 中json数据格式:

(关于什么是json格式,自己百度)

json数据根据给的上面的这个模板进行配置,注意字段:

test_list :单个接口的多种状态的测试名称,根据该字段列表中的值进行循环生成py的测试脚本

expect    :断言的数据

mode     :用于判断断言采用何种模式(具体情况参看lib库里的resultprocess.py文件)

R : 用于判断是否返回测试数据

reclye: 用于判断是否循环

replace_filed: 标识符,用于判断哪个参数需要被替换,主要用于业务串联测试

server_data 中excel数据格式:

excel里面的数据根据给的上面的这个模板进行配置,注意字段:

测试内容 :写业务流程

测试文件名:表示自动生成的测试脚本的文件名

测试标题:业务串联测试的用例名

调用文件:填写需要串联的接口,以“ ,"隔开

传递字段: 表示下一个接口需要从上一个接口返回的数据中获取的字段内容

测试报告:

3.框架使用说明:

测试人员根据开发提供的接口文档,对于接口的测试点进行完整的分析,编写测试用例,再把测试用例转换成对应的json和excel文档,启动console里面的start_文件,选择对应的测试模式,进行测试

 

4.框架结构图:

觉得不错的可关注微信公众号在手机上观看,让你用手机边玩边看

转载于:https://www.cnblogs.com/test-my/p/6054591.html

相关文章:

arcpy实现空间查询_布隆过滤!Python实现亿级数据集中元素快速查找

前段时间在做数据碰撞分析时,遇到一个在数亿级的int型数据集中查找30万个特定int值是否存在的需求,当时尝试了几种方式通过分片,然后做增量分析HashMap这两种方式第一种太慢,即使后面进一步实现了分布式计算,可仍然无法…

比特币如何实现—《区块链历史链条》2

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 11比特币为什么还没有挖完 比特币系统靠调节难度系数保证比特币不被太快挖完。每10分钟,全网矿工共同计算一道难题,竞争记账…

centos7 系统下搭建 lnmp 环境

目录 目录概述准备工作开始编译安装1. 安装 Nginx1. 解压2. 环境准备3. 编译过程4. Nginx 服务2. 安装 MySQL1. 解压2. 环境准备3. 安装 CMake 编译器:4. 编译过程5. 初始化数据库6. MySQL 服务3. 安装 PHP1. 安装依赖包2. 编译安装3. 配置 PHP4. 整合 LNMP1 编辑 N…

dp uva1218

题目链接 一共有三种状态: 1、d[u][0]:u是服务器,每个子结点可以是也可以不是。 2、d[u][1]:u不是服务器,但u的父亲是,u的子结点都不是服务器。 3、d[u][2]:u和u的父亲都不是服务器,…

浏览器安全检查己通过_百度主动推送三项合一功能

百度主动推送三项合一功能作者:68喜功能模块:搜索关键词记录推送熊掌号当天推送熊掌号历史推送普通主动推送*///错误显示屏蔽error_reporting(E_ERROR | E_WARNING | E_PARSE);require ./common.inc.php; //引入公用函数$starid 1; //初始ID 开$limit…

EOS账户权限

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 账户和权限 钱包 账户 授权和权限 其他 默认账户配置(单个签名) 多签名账户和自定义权限 帐户是存储在区块链中的人类可读标识符。 每个交易都根据…

怎样在表格中选出同一类_3分钟教会你如何将不同表格中的数据关联在一起

原标题: 3分钟教会你如何将不同表格中的数据关联在一起版权声明:本文为博主原创文章,未经博主允许不得转载。智能输入超级表格 微视频关键词: 智能输入 关联不同表格 逻辑输入「超级表格微视频」第六期提升效率、 增强免疫力&…

矢量图面层和线层相交得到相交后的线层文件(gis相交)

目的:将arcgis里的面层和线层相交(重叠)部分的线单独生成一个shp文件,用于道路路网密度计算等。注意:进行相交运算后生成的是线要素文件,相当于把面线相交部分的线单独拿了出来。操作例子:将图示的面层和线层相交处理。…

区块链3.0:拥抱EOS

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 EOS是当下最火的区块链技术,被社会广泛看好为下一代区块链3.0。不同于以太坊的学习,EOS的主语言是C,本文作为EO…

python3.9.0 print_关于 Python 3.9,那些你不知道的事

原标题:关于 Python 3.9,那些你不知道的事作者 | Ayushi Rawat编译 | 高卫华题图 | 视觉中国Python一直在满足社区需求,并且将成为未来使用最多的语言。Python的下一个版本带来了更快速的进程释放,性能的提升,简便的新…

djangorestframework怎么这么好用!

一年前就已经用过restframework, 当时觉得这个只是给web框架打辅助的, 他能实现的我也都实现(可能没有那么好用, 嘿嘿) 但是我有一种东西叫做效率, 时间就是金钱, 别人造好的就直接用就可以了, 自己其实没必要在去重复. 最近写一个调查问卷系统, 利用了以下知识点 1. django 2.…

第五百六十四天 how can I 坚持

变得越来越成熟了啊,放下的速度越来越快了。 我不会去羡慕那些亿万富翁,也不会去鄙视一个流浪汉,人人生而平等,just oncelife。 学会线代睡觉,晚上竟然又看起了不良人2.哎。转载于:https://www.cnblogs.com/52-it/p/60…

EOSIO Dawn 4.0 发布

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 关于Dawn 4.0 RAM分配的反馈 一些社区成员表示担心,在其他任何人发现之前,有些人会通过购买便宜的内存来获得不合理的利润。…

shell脚本俄罗斯方块游戏

亲自测试了一个大牛写的shell脚本&#xff0c;感兴趣可以看看&#xff0c;效果如下&#xff1a; 代码如下&#xff1a; 1 #!/bin/bash2 3 # Tetris Game4 # 10.21.2003 xhchen<[email]xhchenwinbond.com.tw[/email]>5 6 #APP declaration7 APP_NAME"${0##*[\\/]}&…

python 虚拟现实_虚拟现实 | MOOC中国 - 慕课改变你,你改变世界

你将学到什么Discover the fundamentals of Virtual Reality, the hardware and history, different applications, and the psychology and challenges of the medium.Learn the basics of 3D graphics, how we create objects and how to lay them out to create an environm…

Linux常用开发环境软件-jdk安装

linux下安装jdk1.8版本 用rpm -qa | grep java查看rpm安装的jdk版本卸载openjdk[roothuangdanfeng ~]# rpm -e --nodeps tzdata-java-2016c-1.el6.noarch     [roothuangdanfeng ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64     [roothuang…

EOS Cleos 命令使用指南

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 命令参考 操作 语法 例子 获取所有命令 $ cleos 例子 获取所有子命令 $ cleos ${command} 例子 链接节点 $ cleos --url node:{node}:no…

如何养出一个三十几亿身家的儿子

简评&#xff1a;他是 Atlassian 联合创始人&#xff08;$36亿&#xff09;的父亲&#xff0c;他以前是花旗银行和 IBM 的高管&#xff0c;是在澳大利亚设立花旗银行的那个人。晚饭时间饭桌上与孩子们聊的是「global issues」。 为了避免混淆&#xff0c;以下简称「父亲」和「儿…

jQuery学习- 内容选择器

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>内容选择器</title><script src"js/jquery.js"></script><script type"text/javascript">$(function(){//利用:contains获取包…

quickpcb添加pcb库_quickpcb使用说明

怎样抄板呢&#xff1f;抄板流程是怎样的&#xff1f;抄板比设计难度低得多&#xff0c;抄板&#xff0c;其实就是依葫芦画瓢。抄板步骤的简单说明&#xff1a;1.扫描电路板图片2.运行Quickpcb2005程序3.在文件菜单中调入扫描的电路板图片4.这个软件提供了测量工具和计算器&…

[mqtt]mqtt嵌入式移植

目前在无线这块&#xff0c;很多4G模组的厂商已经将mqtt放入模块内&#xff0c;无需在项目代码中再实现mqtt移植 github eclipse paho source code: https://github.com/mqtt/mqtt.github.io/wiki/libraries STM32 mqtt移植: http://sun2y.me/2017/05/12/MQTT%E5%8D%8F%E8%AE%A…

vue中点击第一次没有触发按钮怎么操作_vue如何触发某个元素的单击事件?

我来回答一波吧&#xff0c;&#xff0c;&#xff0c;因为没复习&#xff0c;&#xff0c;导致知识点结合不紧密。。。原生的中。。我们的写法是这样的王蒿大爷function myFunction(){document.getElementById("demo").innerHTML"Hello World";}window.οn…

微信小程序request合法域名怎么配置啊

request合法域名怎么配置啊&#xff0c; 有木有配置好的大神发来看看呀&#xff01; 用你申请小程序的后台账号&#xff0c;登录微信公众平台。然后点击设置&#xff0c;可配置服务器信息。<ignore_js_op>WechatIMG14.jpg (18.29 KB, 下载次数: 0) 登陆后 <ignore_js_…

全球比特币和区块链领域创业企业全景图

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 全球比特币和区块链创业企业中&#xff0c;美国的数量占全球55%&#xff0c;其次为英国占6%&#xff0c;新加坡占3%&#xff0c;中国仅占2%&#x…

iphone 在设置了initial-scale=1 之后,在设置滚动条之后,没有滑动效果的解决办法...

iphone在设置了initial-scale1 之后&#xff0c;我们终于可以以1:1 的比例进行页面设计了。 关于viewport&#xff0c;还有一个很重要的概念是&#xff1a;iphone 的safari 浏览器完全没有滚动条&#xff0c;而且不是简单的“隐藏滚动条”&#xff0c;是根本没有这个功能。 iph…

python入门小练习_python入门题目小练

Q1:Return the number (count) of vowels in the given string.We will consider a, e, i, o, and u as vowels for this Kata.The input string will only consist of lower case letters and/or spaces.也就是返回给定字符串中的元音字母(a, e, i, o, u)个数。分析&#xff1…

Cookie 用法

//Cookie:是一个客户端状态保持机制&#xff0c;&#xff08;网站的数据是存在客户端&#xff09;&#xff0c;与隐藏域与ViewState对象都属于这种客户端状态保持&#xff0c;Cookie中存储的是关于网站相关的文本字符串数据。Cookie的存储方式有两种&#xff0c;如果不指定过期…

比特币vs分布式账本vs以太坊vs区块链

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 我们经常被告知&#xff0c;区块链 - 比特币背后的技术 - 不仅将重新布线银行业&#xff0c;还包括社会保障支付&#xff0c;医疗保健甚至数字投票…

git 修改标签名称_Git常用命令汇总,希望能帮到你

展示帮助信息git help -g回到远程仓库的状态抛弃本地所有的修改&#xff0c;回到远程仓库的状态。git fetch --all && git reset --hard origin/master重设第一个commit也就是把所有的改动都重新放回工作区&#xff0c;并清空所有的commit&#xff0c;这样就可以重新提…

js字符串去重

js字符串去重&#xff1a; 1、 去掉字符串前后所有空格&#xff1a; function Trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); }说明&#xff1a; 如果使用jQuery直接使用$.trim(str)方法即可&#xff0c;str表示要去掉前后所有空格的字符串。 2、 去掉字…