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
执行测试,如下所示:
C:UsersShuqing>hrun D:api_testHttpRunner_testtest_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:UsersShuqingreports1533092144.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对接,开发中。。。
下载安装
- 安装mysql数据库服务端(推荐5.7 ),并设置为utf-8编码,创建相应
HttpRunnerManager
数据库,设置好相应用户名、密码,启动mysql。 - 将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
文件,进行如下配置
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
目录,然后执行下面命令,自动安装需要的依赖库文件。
pip install -r requirements.txt
样式文件更新
由于该项目已经停止更新维护,导致部分样式css文件地址失效。修改HttpRunnerManagertemplates
下的base.html
文件 第23
行,需要修改一下
#将这行代码进行更新
<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/
注册登录之后就可以看到平台的界面,接下来就可以创建接口测试的项目和用例了。