项目地址:

https://github.com/HttpRunner/HttpRunner

中文手册:

http://cn.httprunner.org/

首先是环境搭建:

pip install httprunner

或者

pip3 install httprunner

安装完成后cmd执行以下命令,有返回则成功:

 hrun -V

>>>0.9.7

har2case -V

>>>0.1.4

测试准备

抓包分析

在开始测试之前,我们需要先了解接口的请求和响应细节,而最佳的方式就是采用 Charles Proxy 或者 Fiddler 这类网络抓包工具进行抓包分析(我个人强推Charles)。

我们以某快递查询接口为例,在本案例中,我们先进行权限校验,然后成功创建一个用户,对应的网络抓包内容如下图所示:

接口和参数:

http://www.kuaidi100.com/query?type=huitongkuaidi&postid=350757819118

响应参数如下:

{"message":"ok","nu":"350757819118","ischeck":"1","condition":"F00","com":"huitongkuaidi","status":"200","state":"3","data":[{"time":"2017-12-21 15:42:29","ftime":"2017-12-21 15:42:29","context":"广州市|广州市【广州新永和站】,周祥代 已签收","location":""},{"time":"2017-12-21 14:28:59","ftime":"2017-12-21 14:28:59","context":"广州市|广州市【广州新永和站】,【周海祥/18925068779】正在派件","location":""},{"time":"2017-12-21 14:27:59","ftime":"2017-12-21 14:27:59","context":"广州市|到广州市【广州新永和站】","location":""},{"time":"2017-12-20 23:43:30","ftime":"2017-12-20 23:43:30","context":"广州市|广州市【广州黄埔转运中心】,正发往【广州新永和站】","location":""},{"time":"2017-12-20 20:40:15","ftime":"2017-12-20 20:40:15","context":"广州市|到广州市【广州黄埔转运中心】","location":""},{"time":"2017-12-20 16:18:35","ftime":"2017-12-20 16:18:35","context":"广州市|广州市【广州转运中心】,正发往【广州黄埔转运中心】","location":""},{"time":"2017-12-20 08:27:05","ftime":"2017-12-20 08:27:05","context":"广州市|到广州市【广州转运中心】","location":""},{"time":"2017-12-19 03:21:02","ftime":"2017-12-19 03:21:02","context":"西安市|西安市【西安转运中心】,正发往【广州转运中心】","location":""},{"time":"2017-12-18 22:52:37","ftime":"2017-12-18 22:52:37","context":"西安市|到西安市【西安转运中心】","location":""},{"time":"2017-12-18 22:43:29","ftime":"2017-12-18 22:43:29","context":"西安市|到西安市【西安南郊二站集货点】","location":""},{"time":"2017-12-17 21:29:25","ftime":"2017-12-17 21:29:25","context":"西安市|西安市【西安西郊五站】,【赵永刚/02962255063】已揽收","location":""}]}

然后右键导出,选择har格式。

将har文件进行转换,cmd命令:

 >>>  har2case kauidi.har  kuaidi.json

这样就可以把har格式的转换为json格式的用例

分割线---------------------------------------------------------------------------------------------------

接下来重点是讲用例,也就是json的组成部分。

生成的.json文件内容如下:

[
{
"config": {
"name": "testset description",
"variables": [],
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
}
}
},
{
"test": {
"name": "/query",
"request": {
"params": {
"type": "huitongkuaidi",
"postid": "350757819118"
},
"url": "http://www.kuaidi100.com/query",
"method": "GET"
},
"validate": [
{
"eq": [
"status_code",
200
]
},
{
"eq": [
"headers.Content-Type",
"text/html;charset=UTF-8"
]
},
{
]
}
]
}
}
]

测试用例的格式如下:

config作为整个测试用例集的全局配置项

test:对应单个测试用例。

我从以下4个方面介绍Httprunner的优势:

第一,断言。

断言参数存放在上述代码的这个部分,因为这是自动生成的,因此我们需要根据参数的返回值自己加进去一些数据。

根据响应参数,我们加进去返回结果

执行一下,发现通过

修改断言为其他,则执行失败。

断言可靠,易于维护。

第二,缓存参数。

我们想获取,第一个参数的postid缓存,通过下面的方法:

当需要引用的时候,直接使用

这样就在test2中使用了,test1中的缓存参数。

执行两条用例都成功:

第三个:数据驱动

同样,以快递号,postid为例,假设我们要测试,从350757819118~~350757819200区间的所有快递号码。我们只需要讲数据写入csv文件,并创建参数和.csv文件的关联。

例如:

执行用例:

总共执行了22条,通过一条用例(是因为预期结果的原因,同理我们也可以将所有预期结果放入csv文件,进行关联。从而减少代码量)。设置的数据均被执行。

最后就是测试报告:

每次执行的测试报告以html的格式保存,

内容如下:

包括详细错误日志:

总结:
因为后台做了大量工作,因此我们只需要维护少量的json数据,工作量减少,效率提高。

灵活性:可根据自己需要,定义合适的方法或者数据缓存机制。

httprunner也提供了基于locust的性能测试,可根据需要直接运行json文件即可!

同时,最重要的是,测试用例和代码的分离。这样使得稍有编码功底的人迅速上手。

接口用例可通过har文件录制转换得到,也可自己定义。


python爱好者交流群:810306356

自动化测试===Httprunner测试框架介绍的更多相关文章

  1. 【Tavern】1.tavern测试框架介绍

    目录 1. Tavern 和 Postman 2. 安装Python 3. 安装Tavern 4. 第一个测试用例 1. Tavern 和 Postman Tavern是一个用Python实现的接口自 ...

  2. 【转】Java学习---10个测试框架介绍

    [原文]https://www.toutiao.com/i6594302925458113027/ JAVA 程序员需要用到 10 个测试框架和库 Java 程序员需要用到十大单元测试和自动化集成测试 ...

  3. python pytest测试框架介绍二

    在介绍一中简单介绍了pytest的安装和简单使用,接下来我们就要实际了解pytest了 一.pytest的用例发现规则 pytest可以在不同的函数.包中发现用例,发现的规则如下 文件名以test_开 ...

  4. spring boot应用测试框架介绍

    一.spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit.spring test.assertj.hamcres ...

  5. 『德不孤』Pytest框架 — 1、Pytest测试框架介绍

    目录 1.什么是单元测试框架 2.单元测试框架主要做什么 3.单元测试框架和自动化测试框架有什么关系 4.Pytest测试框架说明 5.Pytest框架和Unittest框架区别 (1)Unittes ...

  6. 【pytest系列】- pytest测试框架介绍与运行

    如果想从头学起pytest,可以去看看这个系列的文章! https://www.cnblogs.com/miki-peng/category/1960108.html 前言​ ​ 目前有两种纯测试的测 ...

  7. python pytest测试框架介绍三

    之前介绍了pytest以xUnit形式来写用例,下面来介绍pytest特有的方式来写用例 1.pytest fixture实例1 代码如下 from __future__ import print_f ...

  8. MySQL Test Run 测试框架介绍

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 介绍 MySQL Test Run 简称MTR,是MySQL官方提供的自动化测试框架,执行脚本在发布路径的mysql-te ...

  9. Native App自动化测试及Appium框架介绍

    一  自动化工具简介 1 Appium : 开源,跨平台的自动化测试工具,用于测试Native(原生)和Hybrid(混合)应用,支持IOS/Android/FirefoxOS 平台. 2  环境 : ...

随机推荐

  1. MATLAB strcmp

    比较两个输入字符串是否相等 c = strcmp(str1,str2)比较字符串 str1 与 str2 ,若完全相等则返回 1 ,不相等返回 0 str1 = 'hello'; str2 = 'he ...

  2. HDU 4638 group(离线+树状数组)

    此题实质上是询问每段区间[l,r]内的数字能组成多少段连续的数字. 不大好用线段树合并区间来写. 考虑离线,类似于HH的项链的话,对询问按右端点排序,对于右端点的每一次右移,则对于询问,实际上是求的后 ...

  3. 安装单机Hadoop系统(完整版)——Mac

    在这个阴雨绵绵的下午,没有睡午觉的我带着一双惺忪的眼睛坐在了电脑前,泡上清茶,摸摸已是略显油光的额头(笑cry),,奋斗啊啊啊啊!!%>_<% 1.课程回顾. 1.1 Hadoop系统运行 ...

  4. [洛谷P4070][SDOI2016]生成魔咒

    题目大意:有一个字符串,每次在末尾加入一个字符,问当前共有多少个本质不同的字串 题解:$SAM$,就是问插入这个字符后,多了多少个字串,就是当前这个点的$Right$数组大小. 卡点:无 C++ Co ...

  5. Android原生代码拦截H5 Web页面中JavaScript弹窗/弹框

    <html> <body> <script> function showAlert(){ alert("JavaScript - hello , worl ...

  6. BZOJ2427:[HAOI2010]软件安装——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=2427 https://www.luogu.org/problemnew/show/P2515 现在 ...

  7. 洛谷3800:Power收集——题解

    https://www.luogu.org/problemnew/show/P3800 可以把游戏界面理解成一个N行M列的棋盘,有K个格子上有P点,其价值为val(i,j) 初始灵梦可以选择在第一行的 ...

  8. 背景建模技术(六):帧处理(FrameProcessor)模块

    前面几篇文章简单介绍了BgsLibrary的入口函数.视频分析和视频捕获模块,本文将简单介绍帧处理模块,即对每一帧进行处理的函数,也就是真正调用背景建模算法的接口处. 下面贴出源码供大家分析: #in ...

  9. ACE线程管理机制-并发控制(2)

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/04/581793.html ACE Guard类属 与C一级的互斥体API相比较,Mutex包 ...

  10. mysql按月统计六个月内不同类型订单的成交金额

    mysql按月统计六个月内不同类型订单的成交金额 创建数据库 CREATE DATABASE test; 创建订单表 CREATE TABLE `t_order` ( `id` ) NOT NULL ...