自动化测试===Httprunner测试框架介绍

项目地址:

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文件内容如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

[

  {

    "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文件录制转换得到,也可自己定义。

Httprunner测试相关推荐

  1. 自动化测试===Httprunner测试框架介绍

    项目地址: https://github.com/HttpRunner/HttpRunner 中文手册: http://cn.httprunner.org/ 首先是环境搭建: pip install ...

  2. 想学测试如何入门和学习软件测试?今天我就好好给你唠唠

    我根据薪资的不同,划分成以下几个阶段具体说一下: 月薪5-9k:从零基础入门到能够找到工作 月薪15-25k:测试在职搞定性能测试和自动化测试 年薪30W+:搞定测试开发,进入一线大厂 第一个阶段:月 ...

  3. 测试用例 集成测试增删改查_20年高级测试人员的进阶汇总

    软件测试分为初级测试.中级测试.高级测试. 初级测试: 刚刚入行,功能测试是测试工程师的基础功,薪资范围在5K-9K.你可能是应届毕业生,也可能是打算转行进入这个行业,那你必须要掌握这些. 软件测试的 ...

  4. 腾讯、阿里、百度...大厂招聘火热中,测试员如何才能入大厂?

    近几年,互联网行业蓬勃发展,使越来越多的年轻人跻身前往,希望在这一方土地实现自己的梦想,相伴的,人才涌入使得竞争增大,岗位的要求也随之增高,而像大厂等平台更成为最佳的选择地. 据说如今阿里,腾讯每月都 ...

  5. 0基础24岁女硕士生,想转行做月薪30k的测试开发,需要从什么开始学习?

    最近后台有个粉丝留言说:说她24岁硕士生,本科和研究生阶段都未接触过测开.那该如何学习测试开发呢,接下来我带大家一一解惑 与IT行业大量男生的现状相比,女生一旦做得好的话,反而会更受欢迎,女生天生具有 ...

  6. 软件测试岗月薪3w+的测试,到底强在哪里?测试开发真的就是天花板了吗?

    小编热衷于收集整理资源,记录踩坑到爬坑的过程.希望能把自己所学,实际工作中使用的技术.学习方法.心得及踩过的一些坑,记录下来.也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己 ...

  7. 7年时间,从功能测试到测试开发月薪30K,有志者事竟成

    突破自己的技术瓶颈并不是一蹴而就,还是需要看清楚一些东西,这里也有一些经验和见解跟大家分享一下.同样是职场人士,我也有我的经历和故事.在工作期间,我有过2年加薪5次的小小"战绩"( ...

  8. 测试开发工程师,年薪100W不过分吧

    在说测试开发工程师的薪资待遇之前,咱们要先了解软件测试岗位是用来做什么的,岗位是否重要,只有你知道了这些,才能判断这个岗位是否有价值!软件测试是依据需求分析和测试用例,运用手工和自动化的手段来验证实际 ...

  9. 毕业3年,我从鉴黄师转行到阿里做测试

    前言 最近两个月比较忙,没有写文章,感觉尿尿都有点儿分叉了. 本篇文章记录一下自己毕业后的转型过程和一些学习路线,如果你也想转行,不妨可以看看,我们有没有共同点. 鉴黄路漫漫 毕业后,我的第一份工作是 ...

最新文章

  1. python培训深圳-深圳哪家python培训班比较靠谱
  2. vue 数据(data)赋值问题
  3. SpringBoot+Thymeleaf+Jquery实现模态框的显示与数据填充
  4. 大概看了一下《Flash MX 2004 -- 数据库应用开发 - 基于.NET架构》,感觉有点迷惘了!...
  5. angularjs 弹出框 $modal传值
  6. python求和函数从1到m_python求从M个列表中取N个出来的组合算法
  7. html和css如何制作小球,[网页设计]使用CSS3动画模拟实现小球自由落体效果
  8. 从零开始学前端:HTML的一些文本格式化标签、快捷键、和特殊符号 --- 今天你学习了吗?(CSS:Day02)
  9. npm设置和取消代理的方法
  10. C# Lodop实现打印
  11. Java基础:JDK8新特性
  12. 编织机上下料西门子S71200PLC和KTP700触摸屏程序博途
  13. docker错误:Got permission denied while trying to connect to the Docker daemon socket at....
  14. QT 使用QModbus类实现modbus TCP踩过的坑
  15. R语言-混合型数据聚类
  16. Laravel 漏洞合集
  17. 关于length与length()
  18. python制作刮刮乐惊喜揭秘呀~【趣味代码】
  19. 赠书福利|一本书是写给美国人看的书,告诉我们,美国科技为什么领先?
  20. 集成学习与模型融合(kaggle-Elo Merchant Category Recommendation)

热门文章

  1. How Does Maven Work
  2. GNOME 的新夜灯功能旨在帮助你睡得更好
  3. 手把手玩转win8开发系列课程(11)
  4. Linux常用测试命令
  5. linq学习笔记(2):DataContext
  6. [T-ARA][HUE]
  7. HTC VIVE 虚拟现实眼镜VR游戏体验
  8. hdoj--2534--Score(gcd)
  9. 【编程之美】2.12快速寻找满足条件的两个数
  10. jquery easyui datagrid 排序列