一、HttpRunner


 1、简介

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

 

  • 核心特性:

  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.2

har2case -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 test
    request:
      base_url: http://www.httpbin.org

- test:
    name: get request
    request:
      url: /get
      method: GET
    validate:
      - 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_management

2> 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 ApiManager

python 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,等等。

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

posted on 2018-12-12 21:35  Eric_nan  阅读(799)  评论(0编辑  收藏  举报