前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HttpRunnerManager接口自动化测试—环境搭建

HttpRunnerManager接口自动化测试—环境搭建

作者头像
清风穆云
发布2021-08-09 11:27:45
1K0
发布2021-08-09 11:27:45
举报
文章被收录于专栏:QA一隅

HttpRunner

简介

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

  • 项目地址:https://github.com/HttpRunner/HttpRunner
  • 中文手册:http://cn.httprunner.org

框架流程

核心特性

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

下载安装

使用pip命令进行安装

代码语言:javascript
复制
pip install httprunner

安装后校验是否安装成功,可以使用如下命令进行校验

代码语言:javascript
复制
hrun -V
1.4.2

har2case -V
0.1.8

若版本号正常显示,则说明安装正常。

入门使用

测试场景
  • 测试接口:http://httpbin.org/get
  • 接口类型:GET
用例设计

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

test_httpbin.yml

代码语言:javascript
复制

- 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]

  • config:作为整个测试用例集的全局配置项
  • test:对应单个测试用例
  • name 这个test的名字
  • request 这个test具体发送http请求的各种信息, 如下:
  • url 请求的路径 (若config中有定义base_url, 则完整路径是base_url + url )
  • method 请求方法 POST, GET等等
  • validate 完成请求后, 所要进行的验证内容. 所有验证内容均通过该test才算通过,否则失败.

相关资料

  • yaml教程
  • HttpRunner用例结构
运行测试

使用hrun执行测试,如下所示:

代码语言:javascript
复制
C:\Users\Shuqing>hrun D:\api_test\HttpRunner_test\test_httpbin.yml
get request
INFO     GET /get
INFO     status_code: 200, response_time(ms): 1967.35 ms, response_length: 273 bytes
INFO     start to validate.
.

----------------------------------------------------------------------
Ran 1 test in 1.976s

OK
INFO     Start to render Html report ...
INFO     Generated Html report: C:\Users\Shuqing\reports\1533092144.html
查看测试报告

打开html报告如下:

HttpRunnerManager

简介

HttpRunnerManager是基于HttpRunner的接口自动化测试平台,该工具是对 HttpRunner的包装和Web图形化, 另外还增加了一些新概念(项目/模块)用来组织用例。如果对yaml语法格式不熟悉,以及对于httprunner命令不熟悉的可以使用该平台执行接口自动化测试。

项目地址:https://github.com/HttpRunner/HttpRunnerManager

核心特性

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

下载安装

  1. 安装mysql数据库服务端(推荐5.7+),并设置为utf-8编码,创建相应HttpRunnerManager数据库,设置好相应用户名、密码,启动mysql。
  2. 将HttpRunnerManager下载下来,解压放在任意盘符位置,例如我放在D盘根目录,并重命名为HttpRunnerManager

环境配置

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-3.7.7.exe文件进行安装。

安装完成后如下图如所示,选中RabbitMQ Service -start 然后以管理员身份运行。

可以通过访问 http://localhost:15672 进行测试,默认的登陆账号为:guest,密码为:guest。

相关资料:RabbitMQ Windows环境安装官方手册

数据库配置

打开HttpRunnerManager项目的setting.py文件,进行如下配置

代码语言:javascript
复制
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')
work配置

修改work配置

代码语言:javascript
复制
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:5672//'
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 = 'xxxx@163.com'  # 定时任务报告发送邮箱,支持163,qq,sina,企业qq邮箱等,注意需要开通smtp服务
EMAIL_SEND_PASSWORD = 'XXX'     # 邮箱密码
安装依赖库文件

打开cmd命令窗口,切换到HttpRunnerManager目录,然后执行下面命令,自动安装需要的依赖库文件。

代码语言:javascript
复制
pip install -r requirements.txt
样式文件更新

由于该项目已经停止更新维护,导致部分样式css文件地址失效。修改HttpRunnerManager\templates 下的base.html文件 第23行,需要修改一下

代码语言:javascript
复制

#将这行代码进行更新
 <link rel="stylesheet" href="http://cdn.amazeui.org/amazeui/2.7.2/css/amazeui.min.css"/> 

#更新后的代码
 <link rel="stylesheet" href="http://cdn.bootcss.com/amazeui/2.7.2/css/amazeui.min.css"/> 
数据库迁移
代码语言:javascript
复制
python manage.py makemigrations ApiManager #生成数据迁移脚本
python manage.py migrate  #应用到db生成数据表

创建超级用户,用户后台管理数据库,并按提示输入相应用户名,密码,邮箱。

代码语言:javascript
复制
python manage.py createsuperuser
启动服务

输入下面命令启动服务

代码语言:javascript
复制
python manage.py runserver

服务启动成功之后,打开如下地址,可以进入到不同的页面。

  • 注册: http://127.0.0.1:8000/api/register/
  • 登录: http://127.0.0.1:8000/api/login/
  • 后台数据库管理:http://127.0.0.1:8000/admin/

注册登录之后就可以看到平台的界面,接下来就可以创建接口测试的项目和用例了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 QA一隅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HttpRunner
    • 简介
      • 框架流程
        • 核心特性
          • 下载安装
            • 入门使用
              • 测试场景
              • 用例设计
              • 运行测试
              • 查看测试报告
          • HttpRunnerManager
            • 简介
              • 核心特性
                • 下载安装
                  • 环境配置
                    • erlang
                    • Rabbitmq
                    • 数据库配置
                    • work配置
                    • 安装依赖库文件
                    • 样式文件更新
                    • 数据库迁移
                    • 启动服务
                相关产品与服务
                持续集成
                CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档