一、HttpRunner


1、简介

HTTPRunner 是一款面向HTTP(S)协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

  • 中文手册:https://cn.httprunner.org/

  • 框架流程:

 

  • 核心特性:

  1.  继承Requests的全部特性,轻松实现HTTP(S)的各种测试需要
  2. 测试用例与代码分离,采用YAML/JSON 的形式描述测试场景,保障测试用例具备可维护性
  3. 测试用例支持分层机制,充分实现测试用例的复用
  4. 测试用例支持参数化和数据驱动机制
  5. 使用skip机制实现对测试用例的分组执行控制
  6. 测试请求支持完善的 hook 机制
  7. 支持热加载机制,在文本测试用例中轻松实现复杂的动态计算逻辑
  8. 基于HAR实现接口录制和用例生成功能(har2case)
  9. 结合Locust框架,无需额外的工作即可实现分布式性能测试
  10. 执行方法采用CLI调用,可与Jenkins 等持续集成工具完美结合
  11. 测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
  12. 具有可扩展性,便于扩展实现Web平台化

2、安装

pip install httprunner

 检查是否安装成功:

hrun -v  # 终端下执行
1.4.2har2case -v
0.1.8


3、入门测试

HttpRunner的测试用例支持两种文件格式:YAML 和 JSON。这里以YAML为例

test_httpbin.yml:

  •  config:作为整个测试用例集的全局配置项
  •  test:对应单个测试用例
  •  name:test的名字
  •  request:test中具体发送http请求的各种信息,如下:

     url:请求的路径(若config中有定义base_url,则完整路径是:base_url + url)

    method:请求方法

    validate:完成请求后,所要进行的验证内容,所有验证内容均通过,该test才算通过,否则失败

- config:name: httpbin api testrequest:base_url: http://www.httpbin.org- test:name: get requestrequest:url: /getmethod: GETvalidate:- eq: [status_code,200]

 运行测试:

(imoocc)G:\Envs\imoocc\test > hrun test_httpbin.yml

运行结果:

打开测试报告查看结果:位于test/reports/1544623107.html

绿色部分可点击查看具体,查看每个test详细,可点击log查看。


二、HttpRunnerManager引入

1、简介

HttpRunnerManager 是基于HttpRunner 的接口自动化测试平台,该工具是对HttpRunner 的包装和 Web 图形化,另外还增加了一些新概念

(项目/模块)用来组织用例,如果对yaml语法格式不熟悉,以及对于httprunner命令不熟悉的可以使用该平台执行接口自动化测试。

2、核心特性

  • 项目管理:新增项目、列表展示及相关操作,支持用例批量上传(标准化的 HttpRunner json 和 yaml 用例脚本)
  • 模块管理:为项目新增模块,用例和配置都归属于module,module 和 project 支持同步和异步的方式
  • 用例管理:分为添加config 与 test 子功能,config 定义全部变量和 request 等相关信息,request 可以为公共参数和请求头,也可定义全部变量
  • 场景管理:可以动态加载可引用的用例,跨项目、跨模块,依赖用例列表支持拖拽排序和删除 
  • 运行方式:可单个test,单个module,单个project,也可选择多个批量运行,支持自定义测试计划,运行时可以灵活选择配置和环境
  • 分布执行:单个用例和批量执行结果会直接在前端展示,模块和项目执行可选择为同步或者异步方式
  • 报告查看:所有异步执行的用例均可以在线查看报告,可自主命名,为空默认时间戳保存
  • 定时任务:可设置定时任务,遵循crontab 表达式,可在线开启、关闭、完毕后支持邮寄通知
  • 持续集成:Jenkins 对接

3、安装&环境配置

3.1、安装

  1. 安装mysql数据库服务端,并设置为utf-8编码,创建相应的HttpRunnerManager数据库,启动mysql服务端
  2. 在GitHub中将HttpRunnerManager下载下来,解压放到任意盘。下载地址:https://github.com/HttpRunner/HttpRunnerManager

3.2、环境配置

 HttpRunnerManager 支持分布式执行,模块和项目执行可选择为同步或者异步方式,因此需要安装相关依赖工具

  •  erlang安装:Erlang是一种通用的面向并发的编程语言,它用瑞典电信设备制造商爱立信所管辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。官网下载:http://www.erlang.org/downloads,下载后进行安装即可
  • Rabbitmq:RabbitMQ是一个由Erlang 语言开发的AMQP(高级消息队列协议)的开源实现。它支持多个消息传递协议。RabbitMQ可以部署在分布式和联合配置中,以满足高规模、高可用性的需求,另外安装rabbitmq需先安装erlang。下载地址:http://www.rabbitmq.com/download.html,下载后双击rabbitmq-server的exe文件进行安装,安装完成后,以管理员身份运行RabbitMq Service -start即可

rabbitmq执行命令(以下命令均在rabbitmq的sbin目录下方可执行)

启动rabbitmq(默认安装后自启动):rabbitmq-service start

此时如果不能访问rabbitmq默认网址:http://localhost:15672 ,在sbin目录下执行下述操作,关掉rabbitmq服务器,再重启就好了:

1> rabbitmq-plugins enable rabbitmq_management2> rabbitmqctl start_app


4、数据库配置

上述准备工作完成后,现在先处理HttpRunnerManager中的数据库相关配置,

打开HttpRManager项目,在settings.py文件中关于数据库部分,进行如下修改:

if DEBUG:DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'HttpRunnerManager',  # 新建数据库名'USER': 'root',  # 数据库登录名'PASSWORD': '******',  # 数据库登录密码'HOST': '127.0.0.1',  # 数据库所在服务器ip地址'PORT': '3306',  # 监听端口 默认3306即可
        }}STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),  # 静态文件额外目录
    )
else:DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'HttpRunnerManager',  # 新建数据库名'USER': 'root',  # 数据库登录名'PASSWORD': '',  # 数据库登录密码'HOST': '127.0.0.1',  # 数据库所在服务器ip地址'PORT': '3306',  # 监听端口 默认3306即可
        }}STATIC_ROOT = os.path.join(BASE_DIR, 'static')

5、work配置

修改work配置:

djcelery.setup_loader()
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = 'Asia/Shanghai'
BROKER_URL = 'amqp://guest:guest@127.0.0.1:5672//' if DEBUG else 'amqp://guest:guest@127.0.0.1:15672//'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'CELERY_TASK_RESULT_EXPIRES = 7200  # celery任务执行结果的超时时间,
CELERYD_CONCURRENCY = 1 if DEBUG else 10 # celery worker的并发数 也是命令行-c指定的数目 根据服务器配置实际更改 一般25即可
CELERYD_MAX_TASKS_PER_CHILD = 100  # 每个worker执行了多少任务就会死掉,我建议数量可以大一些,比如200
EMAIL_SEND_USERNAME = '1****57@163.com'  # 定时任务报告发送邮箱,支持163,qq,sina,企业qq邮箱等,注意需要开通smtp服务
EMAIL_SEND_PASSWORD = '****'     # 邮箱密码


三、HttpRunnerManager使用

1、准备工作

1.1、安装HttpRunnerManager 的依赖库文件

pip install -r requirement.txt

1.2、数据库迁移

python manage.py makemigrations ApiManagerpython mange.py migrate

1.3、创建超级用户

python manage.py createsuperuser

1.4、 启动服务

python manage.py runserver

1.5、启动项目后,打开如下地址,可以进入不同页面

 1.5.1、后台数据库管理:http://127.0.0.1:8000/admin/

 51..2、注册页面:http://127.0.0.1:8000/api/register/

 1.5.3、登录页面:http://127.0.0.1:8000/api/login/

 注意:后台数据库管理可用超级用户登录,前端页面登录需要先注册一个账号

后台数据库管理界面:

 

前端操作页面:

 


2、HttpRunnerManager使用

2.1、创建项目

 在首页点击左侧菜单栏 → 新增项目,然后输入项目相关信息。我们接下来会以httpbin里面的接口来进行测试,因此我们将项目名称命名为:httpbin 接口测试

  

  

2.2、创建模块

  一个项目会一般分为多个功能模块,我们可以创建不同模块,然后基于不同模块创建测试用例。在左侧菜单选择模块管理,然后点击 新增模块,接下来输入模块信息。

 这里,我们创建一个模块:HTTP_Methods

 

 

2.3、创建环境

 在接口测试过程中,我们有时需要设置base_url 来提高用例编写执行效率,我们可以在系统设置中的运行环境来创建。

 假如现在我们创建一个 base_url ,操作过程如下:

 

 

2.4、创建用例

 这里以get请求接口为例创建用例:

  http://www.httpbin.org/get

  点击顶部快捷入口: 新增用例 ,然后在用例编辑窗口中切换到request来编程用例:

 

 

 

2.5、用例配置

 2.5.1、header 设置

 如果想自定义header信息,则可以在用例编辑界面点击add headers,然后配置header 信息。

 

2.5.2、url参数

 在GET请求中,经常会有url中的参数,如增加参数:user=eric_name

 

 运行结果:

  

2.5.3、body参数

 在Post请求中,请求参数一般放在请求体 request body中,HttpRunner 支持formdata 和 json 两种数据格式来传递参数。

 发送post请求时,type选择 data类型,添加data数据只需要点击add data按钮,输入指定数据就可以了,如下:

 

 发送json数据:

 

2.5.4、获取返回结果

 HttpRunnerManager提供了extract 功能来从返回结果中提取我们需要的内容,如下所示,执行某个请求后返回结果:

 

 假如我们想提取 user值放在一个变量里面,那么可以使用extract来提取。在用例编辑界面点击extract/validate标签,然后点击 add extract 按钮,进行如下配置即可:

 

 其中 key 的值 response_user 就死将返回值存储所使用的变量名,content.args.user 表示从返回内容中提取args属性中的user值。下一步断言设置中,我们可以验证是否获取正确。

2.5.5、断言设置

 结合前面提取返回值的内容,我们设置断言验证返回的user值是否和我们预期的一样。首先,点击add validate ,然后可以进行如下设置:

 

 上面的 $response_user 表示引用我们之前设置的获取返回值的变量,Comparator 表示匹配规则,下拉有多种匹配可选。执行用例后,在测试报告中可以看到,断言验证是通过的:

 

如果还想添加其他断言规则,就继续点击add validate ,如验证响应状态码为200,等等。

 



转载于:https://www.cnblogs.com/Eric15/articles/10111184.html

HTTPRunner接口自动化框架相关推荐

  1. 浅谈python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  2. python api开发用什么框架_python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  3. 用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)

    python接口自动化一(设计一款自己的接口自动化框架) 一.起因: 前面学习过了python接口requests来进行接口测试,但是在框架选择上还是选择的unittest.当接口数量不怎么多时还好, ...

  4. 转:Jenkins+Jmeter+ant接口自动化框架for Linux学习

    Jenkins+Jmeter+ant接口自动化框架for Linux学习 2018年06月08日 17:55:31 杀生丸的玲 阅读数:1031 版权声明: https://blog.csdn.net ...

  5. pytest文档73-pytest+yaml实现接口自动化框架之用例参数关联

    前言 使用 yaml 文件写测试用例的时候,如何在 yaml 文件的测试用例里面实现参数关联? 这是很多做自动化测试的小伙伴经常思考的一个问题. 接着前面的pytest+yaml 文件实现接口自动化框 ...

  6. python+requests+pytest 接口自动化框架(四)

    目录 一.requests库简介 二.requests库常用方法 三.request()返回的response对象 四.实战案例 post(url, data=None, json=None, **k ...

  7. python+requests+pytest 接口自动化框架(一)

    目录 一.Pytest详解以及常用的插件安装 二.Pytest默认的测试用例的规则 三.Pytest用例运行方式以及参数 1.命令行模式运行 命令:pytes 2.主函数模式运行 3.基于pytest ...

  8. python接口自动化实战(框架)_python接口自动化框架实战

    python接口测试的原理,就不解释了,百度一大堆. 先看目录,可能这个框架比较简单,但是麻雀虽小五脏俱全. 各个文件夹下的文件如下: 一.理清思路 我这个自动化框架要实现什么 1.从excel里面提 ...

  9. 最全最新pytest接口自动化框架

    pytest接口自动化框架介绍: Python+pytest+allure+log+yaml(默认数据和动态传参)+数据驱动+关键字驱动+pymysql(数据清理尽量接口清理)+一键切换环境+多角色随 ...

最新文章

  1. UVa 10180 - Rope Crisis in Ropeland!
  2. QIIME 2用户文档. 15进行纵向和成对样本比较q2-longitudinal(2018.11)
  3. myeclips/eclipse配置总结(根据网络整理)
  4. 不干胶标贴打印模板下载_A4纸打印17*6的不干胶标签打印模板如何设置
  5. web模块化规范和实现
  6. win7远程桌面连接不上,解决办法
  7. 你敢信?FBI 的190万条恐怖分子监控名单竟无密码保护且不慎遭暴露
  8. RecyclerView onClick
  9. 黑群晖数据迁移白群晖(DS 920+)
  10. 图形化编程Mixly——RFID智能门禁
  11. 怎样快速将Word转长图
  12. 计算机安装固态硬盘后启动不稳定,完美解决win7系统安装固态硬盘后开机慢的解决方法...
  13. 大局观有多重要?如何拥有大局观?
  14. Gate.io 土耳其社区与 Casper AMA圆满完成,共话Casper未来发展
  15. Linux文件群发脚本
  16. 拨打上述范围的电话或手机免费
  17. 让office2007支持MathType5.2
  18. 【Lilishop商城】No4-2.业务逻辑的代码开发,涉及到:会员B端第三方登录的开发-平台注册会员接口开发
  19. 高通MSM8909 qpnp-vibrator.c
  20. 使用cmd命令创建vue2脚手架

热门文章

  1. Apache HttpClient 客户端使用详解、文件上传、文件下载
  2. 【springCloud搭建】一、创建springCloud项目
  3. 道路提取公开数据集:Massachusetts
  4. 看看日本人做的Internet Map
  5. DW集训营算法基础梳理任务1:线性回归
  6. 注册登录鉴权以及购物车常见管理
  7. 网络安全-SSRF漏洞原理、攻击与防御
  8. 劳动节特别策划丨实干2020!有奖征集活动
  9. 网易云音乐前端实习二面
  10. 17.4%华为用户换机选择锤子手机 罗永浩尴尬:锤粉只粉不买