HttpRunner ApiTestEngine 正式更名为 HttpRunner

九毫 · 2017年11月09日 · 最后由 张蜓婷🐈 回复于 2018年07月18日 · 4393 次阅读

《ApiTestEngine,不再局限于API的测试》一文的末尾,我提到随着ApiTestEngine的发展,它的实际功能特性和名字已经不大匹配,需要考虑改名了。

经过慎重考虑,最终决定将ApiTestEngine正式更名为HttpRunner

名字的由来

为什么选择HttpRunner这个名字呢?

在改名之前,我的想法很明确,就是要在新名字中体现该工具最核心的两个特点:

  • 该工具可实现任意基于HTTP协议接口的测试(自动化测试、持续集成、线上监控都是以此作为基础)
  • 该工具可同时实现性能测试(这是区别于其它工具的最大卖点)

围绕着这两点,我开始踏上了纠结的取名之路。

首先想到的,ApiTestEngine实现HTTP请求是依赖于Python Requests,实现性能测试是依赖于Locust,而Locust同样依赖于Python Requests。可以说,ApiTestEngine完全是构建在Python Requests之上的,后续无论怎么进化,这一层关系应该都不会变。

考虑到Python Requestsslogan是:

Python HTTP Requests for Humans™

因此,我想在ApiTestEngine的新名字中应该包含HTTP

那如何体现性能测试呢?

想到的关键词就loadperfmeter这些(来源于LoadRunner,NeoLoad,JMeter),但又不能直接用,因为名字中带有这些词让人感觉就只是性能测试工具。而且,还要考虑跟HTTP这个词进行搭配。

最终,感觉runner这个词比较合适,一方面这来源于LoadRunner,大众的认可度可能会比较高;同时,这个词用在自动化测试和性能测试上都不会太牵强。

更重要的是,HttpRunner这个组合词当前还没有人用过,不管是PyPI还是GitHub,甚至域名都是可注册状态。

所以,就认定HttpRunner这个名字了。

相关影响

ApiTestEngine更名为HttpRunner之后,会对用户产生哪些影响呢?

先说结论,没有任何不好的影响!

在链接访问方面,受益于GitHub仓库链接的自动重定向机制,仓库在改名或者过户(Transfer ownership)之后,访问原有链接会自动实现重定向,因此之前博客中的链接也都不会受到影响。

新的仓库地址:https://github.com/HttpRunner/HttpRunner

在使用的命令方面,HttpRunner采用httprunner作为新的命令代替原有的ate命令;当然,为了考虑兼容性,HttpRunnerate命令也进行了保留,因此httprunnerate命令同时可用,并完全等价。在性能测试方面,locusts命令保持不变。

$ httprunner -V
HttpRunner version: 0.8.1b
PyUnitReport version: 0.1.3b

既然是全新的名字,新的篇章必然也得有一些新的东西。

为了方面用户安装,HttpRunner已托管至PyPI;后续大家可以方便的采用pip命令进行安装。

$ pip install HttpRunner

同时,HttpRunner新增了大量使用说明文档(之前的博客主要都是开发过程记录),并托管到专业的readthedocs上面。在文档语言方面,英文优先,中文相对滞后。

访问网址:

另外,为了具有更高的逼格,同时购入域名httprunner.top,后续将作为项目的主页地址。当前还处于实名认证中,预计2~3个工作日后就可以访问了。

关于项目改名这事儿,就说到这儿吧,希望你们也喜欢。

Hello World, HttpRunner.

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 44 条回复 时间 点赞

项目也已加入 TesterHome 的开源项目收录了,喜欢的去点个赞吧😀

http://httprunner.top/ 已经可以访问了。

http://httprunner.top/ 里面的文档都是自己写的吗?如果是的话,可以直接写中文不?

回复

不可以,优先英文

ps,东西很赞!

执行完毕,生成的报告为啥跟楼主的不一样,看着像是没有样式了

wholegale39 回复

你打开浏览器开发者工具,看下js静态资源是否正常加载了

请问支持no-web格式吗,httprunner的执行命令是这样吗:locusts -f baidu.py --full-speed --no-web -c 100 -r 10,会一直提示waiting for slaves to be ready。
好像是因为我开了代理,尴尬

墨无缺 回复

指定--full-speed之后,就会启用主从模式,例如计算机是4核的,那么就会启动一个master,4个slave;而--no-web是只能单线程的,所以这两个参数是冲突的。

这也算一个bug,提示信息不到位,我调整下。

@debugtalk

你好,最近看到了Fuzzing模糊测试,接触了两个开源工具:
1http://hypothesis.works/
2https://github.com/google/oss-fuzz

不知道 httprunner能否 支持这连个工具的扩展 不知道 九毫 是否考虑接入这种支持。

httprunner进行性能测试,带参数 --cpu-cores 2 时,web页面点击开始,然后点击STOP后,仍然是running状态,刷新后又可以点击STOP;
web上,运行状态下面有一个users数量,这个数量有时候也和设置不一致。
请查看是否存在问题。(PS:在微信公众号上直接回复,你那边是不是收不到?)

安装httprunner用pip3 install httprunner,先后需要自己安装colorama、colorlog、pyyaml、requests、jinja2这些组件,希望在文档中能给个说明,文档中目前只说用pip3 install httprunner就可以直接安装,谢谢

九毫 #13 · 2018年02月26日 作者
imliyachao 回复

你安装 httprunner 的时候,就会自动安装那些依赖包的啊,不信你可以看下 setup.py 文件里面。

九毫 #14 · 2018年02月26日 作者
墨无缺 回复

不好意思才看到,我刚在本地试了下是正常的;你先升级到最近版本再试下,要是还有问题的话就到 httprunner 提个issue,附上你本地的环境和日志,我再看下。

九毫 回复

我用的mac,并木有自动安装,不知道是我环境的问题,还是都这样,我是根据报错手动安装的😅

九毫 #16 · 2018年02月26日 作者

@lyctest 感谢反馈,的确是个bug,已经修复了;你再次安装应该就好了。

九毫 回复

😅 客气客气,我想问下,我们有木有httprunner的交流群,现在文档还不完善,大家水平也不一样,所以可能会有许多人碰到不同的问题,所以希望能有个微信或者qq群可以交流的

九毫 #18 · 2018年02月28日 作者
imliyachao 回复

中文文档已经写了很多了,http://cn.httprunner.org

我个人不是很喜欢QQ/微信群的方式,信息会比较乱,而且内容也不好沉淀。

现在GitHub的 issues 中已经有好多人提了各种不同的问题了,你可以看下,要是有新的问题,就提issue吧。

九毫 回复

好哒

九毫 回复

ok,升级之后没有发现之前的问题,之前出问题也忘记把日志弄下来,尴尬。。。

主页404了

九毫 #22 · 2018年03月06日 作者
assdftyui 回复

更新了

最近在使用过程中,遇到html日志中的汉字内容无法展示的情况,请问应该怎么解决呀

九毫 #24 · 2018年03月24日 作者
wuhao 回复

无法展示,显示为什么样子?

九毫 回复

比如response有个key:value为:name: 密码卡管理
在html的log中展示为: \"name\":\"\u5bc6\u7801\u5361\u7ba1\u7406\"

关于 setup_hooks 和 teardown_hooks 的更多内容,请参考《hook 机制》,报404了


我想获取这个id值,该怎么写

九毫 #29 · 2018年03月26日 作者
caige 回复

content.content.depositOrderList.0.id

九毫 回复

好的,谢谢,我被这个搞了一下午

九毫 回复


黄圈的地方就是返回为中文的地方,不知道什么情况

九毫 #32 · 2018年03月27日 作者

@wuhao 已经修复了,更新到 1.3.6 就正常了。

九毫 回复

好的,需要再update一下是吗

运行测试用例的时候,报错,request() got an unexpected keyword argument 'validate'

九毫 #35 · 2018年04月10日 作者
haha 回复

validate 不应该放到 request 中,这两者是平级的。

@debugtalk ,您好,我抓取https开头的请求,报错如下:

初步使用抓取http请求是没问题的,查看报错好像是证书的问题,请问这个框架如何验证证书呢?断言是这样的

非常感谢!

九毫 #37 · 2018年04月23日 作者
启迪之星 回复

本地没有配置证书的原因,你使用 requests 请求也会遇到同样的问题。
解决方式就是关闭校验,即在 config 的 request 中 设置 verify = False。

@debugtalk 直接在requests中执行确实是报证书验证失败,我知道requests中直接加在url的后方。
在您的client.py中,是要这样加上“verify = FALSE”
,看似好像不对,本人小白,望您具体指点下,应该在哪个.py文件中修改呢?
执行postman是正常的。

九毫 #39 · 2018年04月26日 作者
启迪之星 回复

不需要你改框架。在测试用例文件中,request 下面添加 verify: False 就可以了。

有一点疑问,就是比如我运行多个文件的时候,比如我有1.yml, 2.yml,是否可以指定顺序
httprunner 1.yml 2.yml 实际下那是并不会按照我参数顺序去执行,然后实际场景 我就是需要1执行完毕后再去执行2里面的接口

九毫 #41 · 2018年04月27日 作者
梦梦GO 回复

那就需要你将多个测试场景组装成一个场景,可以参考用例分层的做法。

提一个需要功能提升问题,谢谢。
问题场景是这样的,我需要获取response里的一个int值作为下一个用例的header. 而header不支持int. 遂在extract 里用了一个方法。

转字符串方法:

def tostring(value):
return str(value)

Yml引用:

extract:
- token: content.token
- userid: content.data.userId
- stringuserid: ${tostring($userid)}

提示extract不支持正则:

九毫 #43 · 2018年05月07日 作者
wenhuifu 回复

extract 里面不支持调用函数。你转换的方法调用可放置到 variables 里面。

想请问一下,在debugtalk.py定义函数,不靠用例文件的每个参数的传参,可以直接拿到接口的请求参数么

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册