HttpRunner
简介
HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON
脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。
框架流程
核心特性
继承 Requests 的全部特性,轻松实现 HTTP(S) 的各种测试需求
测试用例与代码分离,采用YAML/JSON的形式描述测试场景,保障测试用例具备可维护性
测试用例支持分层机制,充分实现测试用例的复用
测试用例支持参数化和数据驱动机制
使用 skip 机制实现对测试用例的分组执行控制
测试请求支持完善的 hook 机制
支持热加载机制,在文本测试用例中轻松实现复杂的动态计算逻辑
基于 HAR 实现接口录制和用例生成功能(har2case)
结合 Locust 框架,无需额外的工作即可实现分布式性能测试
执行方式采用 CLI 调用,可与 Jenkins 等持续集成工具完美结合
测试结果统计报告简洁清晰,附带详尽统计信息和日志记录
具有可扩展性,便于扩展实现 Web 平台化(HttpRunnerManager)
下载安装
使用pip命令进行安装
pip install httprunner
安装后校验是否安装成功,可以使用如下命令进行校验
hrun -V
1.4.2
har2case -V
0.1.8
若版本号正常显示,则说明安装正常。
入门使用
测试场景
用例设计
HttpRunner 的测试用例支持两种文件格式:YAML 和 JSON。这里以YAML为例。
test_httpbin.yml
- 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才算通过,否则失败.
相关资料
运行测试
使用hrun
执行测试,如下所示:
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对接,开发中。。。
下载安装
安装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配置
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文件地址失效。修改HttpRunnerManager\templates
下的base.html
文件 第23
行,需要修改一下
#将这行代码进行更新
#更新后的代码
数据库迁移
python manage.py makemigrations ApiManager #生成数据迁移脚本
python manage.py migrate #应用到db生成数据表
创建超级用户,用户后台管理数据库,并按提示输入相应用户名,密码,邮箱。
python manage.py createsuperuser
启动服务
输入下面命令启动服务
python manage.py runserver
服务启动成功之后,打开如下地址,可以进入到不同的页面。
注册登录之后就可以看到平台的界面,接下来就可以创建接口测试的项目和用例了。
更多干货
接口Mock利器——Json Server
Locust接口性能测试
Python接口测试数据管理
Restful接口开发与测试—接口测试
Restful接口开发与测试—集成Swagger
Restful接口开发与测试—Django安装
Restful接口开发与测试—Rest简介
Python接口自动化——Requests基础功能
Python接口自动化——Requests
Jmeter+Ant+Jenkins接口自动化测试平台
Postman批量执行与集成Jenkins
Mac 环境Appium自动化测试环境搭建
众里寻他千百度—Appium Android 元素定位方式
Android自动化测试设备弹窗处理
Appium iOS 元素定位与操作
Ubuntu+Docker+STF环境搭建
Anyproxy抓包代理安装使用
Python自动化日志收集
关注公众号,更多干货秒得到