在参与我们测试平台开发的时候,结识了HttpRunne这个优秀的开源接口测试框架,初步研究发现HttpRunner可以非常方便、非常高效地实现接口自动化测试。

01HttpRunner和常用接口测试框架对比

02HttpRunner的用例分层结构

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,通过编写和维护一份YAML/JSON脚本,即可实现接口自动化测试。

测试用例集:对应一个文件夹,包含单个或多个测试用例(YAML/JSON)文件测试用例:对应一个 YAML/JSON 文件,包含单个或多个测试步骤测试步骤:对应 YAML/JSON 文件中的一个 test,描述单次接口测试的全部内容,包括发起接口请求、解析响应结果、校验结果。

2.1测试集数据结构

## 这个list相当于一个测试用例集或者测试用例

[

{ "config": {...}},

{ "test": {...}                     ## 这个test就是一个测试步骤 },

{ "test": {...} }

]

2.2 config数据结构

{

‘name’: ‘testName’,  ## 必填,测试用例的名称,测试报告会以此作为标题

‘parameters’: [] , ## 非必填,全局参数,作用域为整个测试用例

‘variables’: [],   ## 非必填,全局变量,作用域为整个测试用例

‘request’: {       ## 非必填,请求配置

‘base_url’:’http://’,

‘headers’: {

‘Content-Type’: ‘application/json’}

}

}

2.3 test数据结构

{

‘name’: "test",                ##必填,测试步骤名称

‘request’: {                     ## 必填,测试步骤request信息

‘method’: "POST",

'files': {},

'data': {},

'headers': {},

'url': 'http:// ',

'params': {},

‘json’: {},

}

'setup_hooks': [],        ##前置操作

'teardown_hooks': [], ##后置操作

‘extract’: [           ##提取参数保存,以便后面测试步骤使用

{ 'uploadCode':'content.code'}

],

‘validate’: [                   ## 对当前测试结果的校验

'string_equals': ['content.code','200']

],

}

}

03测试平台对接HttpRunner

3.1 通过UI实现测试用例的编写和运行

在测试平台中为了方便用户快速设计接口测试用例,将HttpRunner的用例结构方式实现了UI,后端再进行封装成JSON格式,交给HttpRunner进行执行。

另外,接口测试常常会涉及接口调用前准备工作和接口调用后验证工作,所以测试平台引入了HttpRunner高效的hook机制。前置和后置都实现了多数据源的操作以及灵活的自定义函数。后端将前置数据源实现以及自定义的函数都放到setup_hooks中,后置数据源实现以及自定义函数放到teardown_hooks中。同时后置数据源实现的函数形参都引用了接口返回response,然后将需要验证的数据源查询结果可以放到response,以便在断言中可以进行验证处理。

考虑到测试用例复用性,数据源查询支持参数化。对于普通参数,我们将该类参数格式规范成$parameter,进入hook机制前将SQL中的参数进行参数映射。对于接口返回值作为参数(只出现在后置数据源),我们将该类参数格式规范成{response.json[][]..},其中response作为teardown_hooks中函数形参,在函数中将字符串response.json[][]..转成对象即可拿到接口返回值,再执行相应的SQL语句。

断言是测试用例设计的关键所在,目前平台支持多种验证方式和多种数据类型,接口返回值验证,数据源查询结果验证,函数执行结果验证等验证方式,String,int,float,dict,NoneType等数据类型。

3.2优化测试结果排序,高亮报错用例

测试计划执行结束后会生成测试数据,对其进行重排序,将错误的测试用例前置高亮,这样就可以优先看到有问题的用例。测试报告是html形式,支持定制化。

04总结

引入HttpRunner框架后,我们在测试平台上已经接入了95%以上的接口测试需求,总计10000多个接口测试用例,平均每天接口用例执行次数达到1000以上。通过测试平台实现了测试计划、测试用例管理和测试用例执行以及测试报告一体化,非常有效地提升了整个团队的测试效率和质量。

对于未来,我们准备持续优化HttpRunner和测试平台的集成,支持更多种方式的测试用例编写和执行,引进数据驱动方式,实现参数化循环执行测试用例,其包括3种方式:

1、直接指定关联参数列表;

2、引用CSV文件定义关联参数;

3、引用自定义函数定义关联参数。

综合前置接口报文规范_浅谈用HttpRunner进行接口自动化测试相关推荐

  1. ui自动化测试框架_浅谈前端(UI)自动化测试

    作为一名测试开发从业者,自动化测试好像是绕不开的话题....结合最近接触到的一些测开应聘同学聊到关于前端自动化测试及自己的理解,分享一下自己对UI自动化测试的认识,大概如下. 测试分层的自动化测试思想 ...

  2. java类的命名规范_浅谈Java中的命名规范

    现代软件架构的复杂性需要协同开发完成,如何高效地协同呢? 答案是:制定一整套统一的规范. 无规矩不成方圆,无规范难以协同,比如,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全,试想如果没 ...

  3. 4接口引脚定义_浅谈USB Type-C接口

    笔者前段时间做了一款STM32下载器,为了与新时代接轨,在设计电路板的时候首次使用了USBType-C接口,后来发现其确实很好用.就在今天又设计制作了一款USB-hub,在硬件上我又使用了Type-C ...

  4. java8的函数式接口的好处_浅谈Java 8 新增函数式接口到底是什么

    从 Java 8 开始便出现了函数式接口(Functional Interface,以下简称FI) 定义为: 如果一个接口只有唯一的一个抽象接口,则称之为函数式接口.为了保证接口符合 FI ,通常会在 ...

  5. 《计算机辅助教学及应用实践研究》,《论文_浅谈计算机辅助教学(定稿)》

    <论文_浅谈计算机辅助教学(定稿)> (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 摘要:计算机辅助教学中要用到多媒体课件 ...

  6. python判断两个对象是否为相等使用的运算符是_Python入门_浅谈逻辑判断与运算符...

    这是关于Python的第6篇文章,主要介绍下逻辑判断与运算符. (一) 逻辑判断: 如果要实现一个复杂的功能程序,逻辑判断必不可少.逻辑判断的最基本标准:布尔类型. 布尔类型只有两个值:True和Fa ...

  7. 浅谈 PHY 芯片 UTP 接口直连(不使用变压器)的设计

    浅谈 PHY 芯片 UTP 接口直连(不使用变压器)的设计 1.背景: 一个项目, 需要把IP101GR模块的UTP接口和交换机芯片 (RTL8305NB) 的 UTP 接口连在一起,设计的时候没有考 ...

  8. 前端请求restful风格接口怎么传参_浅谈Restful API 的请求规范

    前言 在SpringMVC架构上进行开发,开发者一直在使用jsp.valocity或者其他页面模版作为表现层面,前端工程师需要将设计师的设计图转换为静态的html页面,然后交付给后端将静态的html页 ...

  9. java变量命名规则_浅谈JAVA开发规范与开发细节(上)

    开发团队在开发过程中,由于每个人的开发习惯,以及对于技术的理解深浅程度不一,往往一个项目在开发过程中,代码的质量,代码的风格都不尽相似,所以有一份适合团队的代码规范是非常有必要的,而一个团队的代码规范 ...

最新文章

  1. (转) 使用Speech SDK 5.1文字转音频
  2. 游戏关卡中的类型运用:《LOOP》的无限可能
  3. Swift入门 新浪微博
  4. python解密_Python解密
  5. 磁盘IOPS计算与测量
  6. 注意了,有关学习前端的一些“坑”,别踩!
  7. ASP.NET 网站管理工具“安全”选项卡为什么打不开?
  8. Linux常用视频播放器
  9. 植物大战僵尸辅助C/C++版
  10. mysql 共享_Mysql局域网共享
  11. 90. 子集 II(中等 回溯 数组)
  12. ubutun 滑动 触控板_Ubuntu下触控板手势调节软件xSwipe
  13. iOS播放器、Flutter高仿书旗小说、卡片动画、二维码扫码、菜单弹窗效果等源码
  14. 微信小程序之如何实现一寸照片换底色(附小程序成品)
  15. 列表最后一页的最后一条数据删除之后,页码自动减一
  16. python 制作英文单词_python常用150个英文单词
  17. ajaxsubmit success 不执行和ajaxsubmit使用问题
  18. 信息安全系统设计基础期中总结
  19. iOS15只是一个更好看的Linux吗?
  20. #10038.A Horrible Poem

热门文章

  1. 线上环境 Linux 系统调用追踪
  2. Linux内核:网络过滤器简介与示例代码
  3. Linux内存管理:转换后备缓冲区(TLB)原理
  4. OpenVZ,Xen,KVM等:虚拟化解决方案
  5. 自旋锁:pthread_spinlock_t,互斥锁:pthread_mutex_t,条件变量:pthread_cond_t,读写锁:pthread_rwlock_t
  6. Linux网络 - 数据包的接收过程
  7. 一个简单的javascript时钟程序
  8. Java一个简单的爬虫:爬去网页代码
  9. Hadoop单机和伪分布式环境搭建
  10. php fwrite服务器上写不进去_使用PHP来简单的创建一个RPC服务