HttpRunner

MIT
Python 2.7/3.4/3.5/3.6
Linux/Unix/macOS/Windows
debugtalk · 2017年11月06日 · 3375 次阅读 · 50 条评论

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

设计理念

  • 充分复用优秀的开源项目,不追求重复造轮子,而是将强大的轮子组装成战车
  • 遵循约定大于配置的准则,在框架功能中融入最佳工程实践
  • 追求投入产出比,一份投入即可实现多种测试需求

核心特性

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

文档

评论列表
debugtalk 发表于 2017年11月08日

完整的用户文档:http://httprunner.readthedocs.io/

debugtalk 发表于 2017年11月09日

新增项目域名:http://httprunner.top/

当前还只是跳转到文档,后续会做一个项目主页出来。

chenling5652 发表于 2017年11月10日

报错啊

debugtalk 发表于 2017年11月10日

@chenling5652 有问题在项目的GitHub上提 issue 吧。

cjtcwyk 发表于 2017年11月13日

给李老师点个赞

Lihuazhang 发表于 2017年11月14日

产品化,国际化

debugtalk 发表于 2017年11月15日

HttpRunner 开始支持 HAR ,意味着同时支持了一大堆主流工具,包括 Fiddler/Charles/Chrome/Firefox/HttpWatch 等等,以此实现脚本录制和生成功能。
https://github.com/HttpRunner/har2case

jooben 发表于 2017年11月20日

支持顶一个,har导入的很实用

shenshen 发表于 2017年11月27日

有中文版的文档么。。正在学习英文

debugtalk 发表于 2017年11月28日

@shenshen
有中文文档,不过还很不完善;英文文档先凑合着看吧

leo126 发表于 2017年12月01日

not just ? more than?

mr_zeng 发表于 2017年12月06日

支持下,支持 PB 数据类型吗?

bingbohe 发表于 2017年12月07日

安装失败 提示: error: Microsoft Visual C++ 10.0 is required. Get it with "Microsoft Windows SDK 7.1": www.microsoft.com/download/details.aspx?id=8279
这个是必须要安装vs2010吗?

debugtalk 发表于 2017年12月08日

@bingbohe
纯粹的Python包,跟vs2010没关系。你先确保你本地的Python环境正常,以及pip工具可用。

debugtalk 发表于 2017年12月08日

@mr_zeng
HttpRunner是一个面向HTTP协议的接口测试工具,与编程语言无关,也没有是否支持某种数据类型之说。

debugtalk 发表于 2017年12月08日

@leo126 感谢指正,貌似我没法编辑内容和描述了。

bingbohe 发表于 2017年12月09日

我换easy_install 安装成功了 @debugtalk

shenshen 发表于 2017年12月20日

又重新看了下,除了语言不一样,设计思想真是一模一样啊。。除开性能部分

BensonMax 发表于 2018年01月08日

弱弱问下传参格式只支持json吗?

Nuanyang2333 发表于 2018年01月16日

英文文档看起来还较为吃力,期待中文文档,先点个赞

zhuzhu_mx 发表于 2018年01月17日

求大佬再给个中文文档,毕竟很多人看英文看的比较吃力

debugtalk 发表于 2018年01月19日

中文文档和案例会有的

debugtalk 发表于 2018年02月17日

中文使用手册来啦:http://cn.httprunner.org/

815475897 发表于 2018年03月05日

试用一下,第一个接口调用就提示:UnicodeEncodeError: 'ascii' codec can't encode characters in position 168-169: ordinal not in range(128)
本地python环境是2.7.10

onlyloveyou_123 发表于 2018年03月10日

请问支持接口线上监控吗,类似elk

linyc 发表于 2018年03月14日

我也是,接口调用提示:UnicodeEncodeError: 'ascii' codec can't encode characters in position 168-169: ordinal not in range(128)
python环境是2.7.5

Ryan.Li 发表于 2018年03月14日

用例不支持断言中文吗?

debugtalk 发表于 2018年03月15日

@815475897 @linyc 在Python2下可能会存在编码的问题,切换到Python3后就不会有该问题了。
另外,我本地使用Python2无法复现,可否将你们的脚本发给我,方便我调试修复下?

debugtalk 发表于 2018年03月15日

@Ryan.Li 支持中文的,建议使用 Python 3,可以避免编码问题。

debugtalk 发表于 2018年03月21日

@815475897 @linyc Python 2.7 版本下 UnicodeEncodeError 的问题已修复。

请升级到 1.2.3 及之后的版本。

$ pip install -U httprunner --pre
815475897 发表于 2018年03月23日

@debugtalk 我已经更新到最新的版本了,UnicodeEncodeError的问题已经好了
但是我现在出现另外一个问题想请教下,我目前mac上的本地python环境有两套,python2.7及python3.6,每次我通过hrun运行的时候都会使用python2来跑,即使我将默认的python环境改成python3也不生效,目前我是通过debug模式在run的时候指定运行环境是python3,可以在hrun的时候指定python版本吗

carl 发表于 2018年04月02日

楼主这个做了多久啊,感觉要花好长时间,然后好多的细节

debugtalk 发表于 2018年04月02日

@815475897 不能,你安装 httprunner 的时候就已经是在特定的 Python 版本下了。如果你要在 Python 3.6 下运行 hrun,那你就得在 Python 3.6 下安装。

推荐使用 pyenv 来管理 Python 环境。

debugtalk 发表于 2018年04月02日

@carl 你可以看下 GitHub 中的代码提交记录,挺长时间了。的确是很多细节,只有逐步迭代优化了。

815475897 发表于 2018年04月10日

现在httprunner有群可以沟通交流吗

wang2549145 发表于 2018年04月12日

如何做jenkins持续集成?

yuwanghua12 发表于 2018年04月13日

楼主能帮我看下是怎么回事吗?
pip install git+https://github.com/HttpRunner/HttpRunner.git#egg=HttpRunner
Collecting HttpRunner from git+https://github.com/HttpRunner/HttpRunner.git#egg=HttpRunner
Cloning https://github.com/HttpRunner/HttpRunner.git to /private/var/folders/gm/10yg5f51571d1jbvvg7vwkyw0000gq/T/pip-build-ms6DrD/HttpRunner
Requirement already satisfied (use --upgrade to upgrade): requests in /Library/Python/2.7/site-packages/requests-2.3.0-py2.7.egg (from HttpRunner)
Collecting PyYAML (from HttpRunner)
Could not fetch URL https://pypi.python.org/simple/pyyaml/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) - skipping
Could not find a version that satisfies the requirement PyYAML (from HttpRunner) (from versions: )
No matching distribution found for PyYAML (from HttpRunner)

我的python版本是

Python 2.7.10 (default, Feb 7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

yuwanghua12 发表于 2018年04月13日

@debugtalk 有内部沟通群吗?能否建一个QQ群,有问题可以交流

debugtalk 发表于 2018年04月13日

@yuwanghua12 没有建群,因为QQ/微信群的沟通效率并不高,而且我平时也没有时间看群里的内容。
遇到问题建议先翻下 GitHub 的历史 issues,若没有,那就在上面新开一个issue吧。

你刚发那个问题,SSL证书报错,多半是你本地开启了抓包工具造成的。

yuwanghua12 发表于 2018年04月16日

本地抓包工具没有开启

zhangwenkal 发表于 2018年04月17日

@debugtalk $ pip install -r requirements-dev.txt 你的git工程里面没有找到这个requirements-dev.txt文件啦

wuyajun88 发表于 2018年04月19日

pipenv run python -m unittest discover windows下,进入git下来的Httprunner根目录后执行这个命令,提示ERROR:root:500 Server Error: INTERNAL SERVER ERROR for url: http://127.0.0.1:5000/api/users/1000 这个是啥情况啊?

yuwanghua12 发表于 2018年04月23日

实践发现mac下 Python2.7 不支持,升级Python到3.6可以安装成功

leeforleslie 发表于 2018年04月26日

存在一个这样的问题:我extract接口A的ID,传入下一个接口B的header中,但是ID是一个int值,此时会提示类型的报错,因为header中的引用值必须是string

debugtalk 发表于 2018年04月26日

有问题麻烦在项目中提 issue,我会逐一处理的。

815475897 发表于 2018年05月02日

有个问题想请教下,能在执行过程中sleep几秒吗

debugtalk 发表于 2018年05月03日

@815475897 可以使用 setup_hooks 或者 teardown_hooks ,在里面进行 sleep 的

wuhao 发表于 2018年05月09日

git拉下来源码之后,能否自己修改源码来使用呢?
另外,pip安装了httprunner,git拉下来源码,再install 源码中的Setup.py这步是否多余?发现会再新拉下一个build目录

wuhao 发表于 2018年05月09日

build目录里面还有有个lib/httprunner目录,和最外层的httprunner目录内容一样,都是built_in.py等内容,所以不知道这个setup.py的作用是什么

JIE_JIE 发表于 2018年05月09日

怎么把上一个接口返回的一个参数,放到下面执行接口的url种