热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

httprunner框架学习总结

目前在开发通用接口平台,已经完成参数引擎,内置函数引擎,执行引擎,API抽离等工作,突然发现了httprunner这个优秀的开源APItest框架,初步研究发现httprunner各方面都很优秀,

  目前在开发通用接口平台,已经完成参数引擎,内置函数引擎,执行引擎,API抽离等工作,突然发现了httprunner这个优秀的开源APItest框架,初步研究发现httprunner各方面都很优秀,遂进一步考虑是否将通用接口平台执行后台迁移至httprunner,经过多日的研究我发现了一个很不友好的地方。

  根据文章《HttpRunner 的测试用例分层机制》,文中介绍用例分层,API抽离其中有句话是这样说的:“API接口定义必须放置在 api 目录下”,这样的话如果我们web的数据存储在MySQL中的话,无法实现这一点,那么在调用API就会提示报错未知定义的API,如果数据存储在yaml文件中,并应用httprunner的脚手架机制生产相应的目录结构,那么这样的web化根本是无用的,只适合一个人自己玩,根本不具有web化的意义(共享即是正义)。

  基于这点,我放弃迁移web执行后台至httprunner的想法,继续自行开发批量执行及报告生成模块。

  下面也分享一下我学习httprunner的所得吧。

  1、安装

    windows安装方法,直接pip安装;也可以去github下载压缩包解压后源码安装,不多说了

  2、知识介绍

    在httprunner中,测试用例引擎最大的特色就是支持 YAML/JSON 格式的用例描述形式,也就是说你可以用编辑YAML的方式来编写接口自动化脚本,如下代码

文件名称:xxxx.yml

- config:
name: demo
variable_binds:
- UserName: test001
- Password: 123456
request:
base_url: http:
//xxx.debugtalk.com
headers:
Accept: application
/json
User
-Agent: iOS/10.3

- test:
name: regist user which passwd
is wrong
request:
url: http:
//m.aicai.com/m/saveSimpleRegister.do?agentId=14759&vt=5
method: POST
headers:
User
-Agent: 'iOS/10.3'
token: content.token
json:
account:
"postsay1"
password:
"%^&*()"
phone:
"13751077575"
isProtocol: on
ajaxReq:
1
validate:
- {"check": "status_code", "comparator": "eq", "expect": 200}
- {"check": "content.status", "comparator": "eq", "expect": error}
- {"check": "content.msg", "comparator": "str_eq", "expect": xlkhslhdfklsdlfh}
- eq: ["status_code" , 200]
- eq: ["content.status" , error]
- eq: ["content.msg" ,xhixvjkdjfljsdf]

  代码释义:config 为当前case的配置项标志,从代码中也可以看到,可以包括参数等信息;

       test为API标志,包含API信息以及断言信息 

       ps:不懂YAML的童鞋请自行学习其他资料

  执行时在yml文件夹所在目录的cmd中输入 httprunner xxxx.yml 即可。

可以看到执行结束,有报告生成,如下图

这样就完成了一个简单接口自动化脚本的编写和执行以及报告的生成,极大的简化了接口自动化的难度,你无需接触Python requests unittest 等代码,事实上httprunner的底层就是那些东西,用约定格式的YAML文件传入数据,httprunner在底层处理数据,发送请求,校验对比结果,生成报告,就酱子。

  其他呢,httprunner还提供了脚手架机制,一键生成httprunner的项目结构,提供抽离API机制 等等,到我发现无法web化后,遂放弃,因为老夫也会写网络爬虫哟,还是自己写后台吧。

  如果你想使用httprunner做接口自动化,建议去看说明文档,ok,就酱紫吧。

 


推荐阅读
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
  • 本文通过C++语言实现了一个递归算法,用于解析并计算数学表达式的值。该算法能够处理加法、减法、乘法和除法操作。 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • 本文记录了在Windows 8.1系统环境下,使用IIS 8.5和Visual Studio 2013部署Orchard 1.7.2过程中遇到的问题及解决方案,包括503服务不可用错误和web.config配置错误。 ... [详细]
  • 解决Visual Studio Code中PHP Intelephense误报问题
    PHP作为一种高度灵活的编程语言,其代码结构可能导致Intelephense插件在某些情况下报告不必要的错误或警告。自1.3.3版本起,Intelephense引入了多个配置选项,允许用户根据具体的工作环境和编程风格调整这些诊断信息的显示。 ... [详细]
  • 本文介绍如何使用JavaScript中的for循环来创建一个九九乘法表,适合初学者学习循环结构的应用。 ... [详细]
  • 探索百度WebFE团队打造的强大HTML5上传插件Web Uploader
    本文将详细介绍由百度WebFE团队开发的Web Uploader,这是一款集成了HTML5与Flash技术的上传组件,以其卓越的用户体验和强大的功能著称。 ... [详细]
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
author-avatar
M-G思维_891
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有