HttpRunner

Apache-2.0
Golang & Python 3.6/3.7/3.8/3.9/3.10
Linux/Unix/macOS/Windows
debugtalk · 2017年11月06日 · 78729 次阅读 · 137 条评论

HttpRunner

Go Referencedownloadspypi versionpyversionsTesterHome

HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型。简单易用,功能强大,具有丰富的插件化机制和高度的可扩展能力。

HttpRunner 用户调研问卷 持续收集中,我们将基于用户反馈动态调整产品特性和需求优先级。

flow chart

版本发布日志 | English

设计理念

相比于其它 API 测试工具,HttpRunner 最大的不同在于设计理念。

  • 约定大于配置:测试用例是标准结构化的,格式统一,方便协作和维护
  • 标准开放:基于开放的标准,支持与 HAR/Postman/Swagger/Curl/JMeter 等工具对接,轻松实现用例生成和转换
  • 一次投入多维复用:一套脚本可同时支持接口自动化测试、性能测试、数字体验监测等多种 API 测试需求
  • 融入最佳工程实践:不仅仅是一款测试工具,在功能中融入最佳工程实践,实现面向网络协议的一站式测试解决方案

核心特性

  • 网络协议:完整支持 HTTP(S)/1.1 和 HTTP/2,可扩展支持 WebSocket/TCP/RPC 等更多协议
  • 多格式可选:测试用例支持 YAML/JSON/go test/pytest 格式,并且支持格式互相转换
  • 双执行引擎:同时支持 golang/python 两个执行引擎,兼具 go 的高性能和 pytest 的丰富生态
  • 录制 & 生成:可使用 HAR/Postman/Swagger/curl 等生成测试用例;基于链式调用的方法提示也可快速编写测试用例
  • 复杂场景:基于 variables/extract/validate/hooks 机制可以方便地创建任意复杂的测试场景
  • 插件化机制:内置丰富的函数库,同时可以基于主流编程语言(go/python/java)编写自定义函数轻松实现更多能力
  • 性能测试:无需额外工作即可实现压力测试;单机可轻松支撑 1w+ VUM,结合分布式负载能力可实现海量发压
  • 网络性能采集:在场景化接口测试的基础上,可额外采集网络链路性能指标(DNS 解析、TCP 连接、SSL 握手、网络传输等)
  • 一键部署:采用二进制命令行工具分发,无需环境依赖,一条命令即可在 macOS/Linux/Windows 快速完成安装部署

用户声音

基于 252 份调研问卷的统计结果,HttpRunner 用户的整体满意度评分 4.3/5,最喜欢的特性包括:

  • 简单易用:测试用例支持 YAML/JSON 标准化格式,可通过录制的方式快速生成用例,上手简单,使用方便
  • 功能强大:支持灵活的自定义函数和 hook 机制,参数变量、数据驱动、结果断言等机制一应俱全,轻松适应各种复杂场景
  • 设计理念:测试用例组织支持分层设计,格式统一,易于实现测试用例的维护和复用

更多内容详见 HttpRunner 首轮用户调研报告(2022.02)

一键部署

HttpRunner 二进制命令行工具已上传至阿里云 OSS,在系统终端中执行如下命令可完成安装部署。

$ bash -c "$(curl -ksSL https://httprunner.com/script/install.sh)"
# backup
$ bash -c "$(curl -ksSL https://httprunner.oss-cn-beijing.aliyuncs.com/install.sh)"

安装成功后,你将获得一个 hrp 命令行工具,执行 hrp -h 即可查看到参数帮助说明。

$ hrp -h

██╗  ██╗████████╗████████╗██████╗ ██████╗ ██╗   ██╗███╗   ██╗███╗   ██╗███████╗██████╗
██║  ██║╚══██╔══╝╚══██╔══╝██╔══██╗██╔══██╗██║   ██║████╗  ██║████╗  ██║██╔════╝██╔══██╗
███████║   ██║      ██║   ██████╔╝██████╔╝██║   ██║██╔██╗ ██║██╔██╗ ██║█████╗  ██████╔╝
██╔══██║   ██║      ██║   ██╔═══╝ ██╔══██╗██║   ██║██║╚██╗██║██║╚██╗██║██╔══╝  ██╔══██╗
██║  ██║   ██║      ██║   ██║     ██║  ██║╚██████╔╝██║ ╚████║██║ ╚████║███████╗██║  ██║
╚═╝  ╚═╝   ╚═╝      ╚═╝   ╚═╝     ╚═╝  ╚═╝ ╚═════╝ ╚═╝  ╚═══╝╚═╝  ╚═══╝╚══════╝╚═╝  ╚═╝

HttpRunner is an open source API testing tool that supports HTTP(S)/HTTP2/WebSocket/RPC
network protocols, covering API testing, performance testing and digital experience
monitoring (DEM) test types. Enjoy! ✨ 🚀 ✨

License: Apache-2.0
Website: https://httprunner.com
Github: https://github.com/httprunner/httprunner
Copyright 2021 debugtalk

Usage:
  hrp [command]

Available Commands:
  boom         run load test with boomer
  completion   generate the autocompletion script for the specified shell
  har2case     convert HAR to json/yaml testcase files
  help         Help about any command
  pytest       run API test with pytest
  run          run API test with go engine
  startproject create a scaffold project

Flags:
  -h, --help               help for hrp
      --log-json           set log to json format
  -l, --log-level string   set log level (default "INFO")
  -v, --version            version for hrp

Use "hrp [command] --help" for more information about a command.

赞助商

金牌赞助商

霍格沃兹测试开发学社

霍格沃兹测试开发学社是业界领先的测试开发技术高端教育品牌,隶属于测吧(北京)科技有限公司 。学院课程由一线大厂测试经理与资深测试开发专家参与研发,实战驱动。课程涵盖 web/app 自动化测试、接口测试、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移&右移、精准测试、测试平台开发、测试管理等内容,帮助测试工程师实现测试开发技术转型。通过优秀的学社制度(奖学金、内推返学费、行业竞赛等多种方式)来实现学员、学社及用人企业的三方共赢。

进入测试开发技术能力测评!

开源服务赞助商

Sentry

HttpRunner is in Sentry Sponsored plan.

Subscribe

关注 HttpRunner 的微信公众号,第一时间获得最新资讯。

HttpRunner

如果你期望加入 HttpRunner 核心用户群,请填写用户调研问卷并留下你的联系方式,作者将拉你进群。

评论列表
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 吧。

Vincent 发表于 2017年11月13日

给李老师点个赞

恒温 发表于 2017年11月14日

产品化,国际化

debugtalk 发表于 2017年11月15日

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

lsy 发表于 2017年11月20日

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

西神神 发表于 2017年11月27日

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

debugtalk 发表于 2017年11月28日

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

lionel126 发表于 2017年12月01日

not just ? more than?

曾先僧 发表于 2017年12月06日

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

冰薄荷 发表于 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 感谢指正,貌似我没法编辑内容和描述了。

冰薄荷 发表于 2017年12月09日

我换 easy_install 安装成功了 @debugtalk

西神神 发表于 2017年12月20日

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

发表于 2018年01月08日

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

程明远 发表于 2018年01月16日

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

Leo 发表于 2018年01月17日

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

debugtalk 发表于 2018年01月19日

中文文档和案例会有的

debugtalk 发表于 2018年02月17日

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

ChelseaZhang 发表于 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

yc 发表于 2018年03月14日

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

锐洪 发表于 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
ChelseaZhang 发表于 2018年03月23日

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

bauul 发表于 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 中的代码提交记录,挺长时间了。的确是很多细节,只有逐步迭代优化了。

ChelseaZhang 发表于 2018年04月10日

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

银光 发表于 2018年04月12日

如何做 jenkins 持续集成?

王华 发表于 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.

王华 发表于 2018年04月13日

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

debugtalk 发表于 2018年04月13日

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

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

王华 发表于 2018年04月16日

本地抓包工具没有开启

zhangwenkal 发表于 2018年04月17日

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

近涛 发表于 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 这个是啥情况啊?

王华 发表于 2018年04月23日

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

小弥勒 发表于 2018年04月26日

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

debugtalk 发表于 2018年04月26日

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

ChelseaZhang 发表于 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 的作用是什么

李洁 发表于 2018年05月09日

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

yaho 发表于 2018年06月23日

@debugtalk 请问下,脚手架分层里面,api、suit、testcases 能备注吗?

ChelseaZhang 发表于 2018年07月04日

suite 的 config 能否支持 parameters

jcgao 发表于 2018年07月06日

运营测试用例,总是报这个错
ERROR: runTest (httprunner.task.TestCase)

/api/get-token

Traceback (most recent call last):
httprunner.exception.FunctionNotFound: get_sign not found in recursive upward path!

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
httprunner.exception.ParamsError: get_sign is not defined in bind functions!

yaho 发表于 2018年07月19日

@debugtalk httprunner,做类似于 qq 空间那种互评的,能不能在一条 testcase 里面实现?我现在思路是:A 登录、发说说,B 登录、回复,全部在一个 testcase 里面,但是感觉好像不大对

hu 发表于 2018年07月20日

求教楼主,我在安装的时候,在这一步,输入命令:pipenv install --dev 后提示:“To activate this project's virtualenv,run pipenv shell”,然后我又输入 pipenv shell,提示:AttributeError:'module' object has no attribute 'run',我该怎么解决这个问题呢?急,在线等!谢谢楼主!!!

da-pengTT 发表于 2018年07月30日

好像,ansible 的 playbook ,接口测试行业的剧本吗?

da-pengTT 发表于 2018年07月30日

大佬,能像 ansible 搞成 自定义模块 就牛逼了~😄

美好一点 发表于 2018年08月10日

ERROR: runTest (httprunner.task.TestCase)

/api/get-token

Traceback (most recent call last):
httprunner.exceptions.FunctionNotFound: get_sign not found in recursive upward path!

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
httprunner.exceptions.ParamsError: get_sign is not defined in bind functions!

debugtalk 发表于 2018年08月10日
零星小雪 发表于 2018年08月23日

请教楼主,我用了 httpmanager,在页面上写测试用例的时候如何在请求中带入 cookie 呢@debugtalk

DarkLi 发表于 2018年08月22日

@debugtalk 我在 debugtalk.py 里定义了一个 code 函数,在测试用例中调用的时候说找不到这个函数呢 是不是哪里没写对

Traceback (most recent call last):
FunctionNotFound: code not found in debugtalk.py module!
module mapping: {'variables': {}, 'functions': {}}

penghu2 发表于 2018年10月10日

中文的域名为啥老是访问不了

doudou-china 发表于 2018年10月11日

python 2.7.3
httprunner 1.5.13
linux
校验中文时,报这个错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-11: ordinal not in range(128)
@debugtalk

debugtalk 发表于 2018年10月11日

@penghu2 用的是 github pages,不知道是不是偶尔会被墙。

已经上 HTTPS 了, https://cn.httprunner.org

debugtalk 发表于 2018年10月11日

@doudou-china Python 2 维护真的好心累,升级 Python 3 吧,后续 2 应该不再维护了。

简单 发表于 2018年10月12日

python 2.7.15 报错
用 python 脚本运行报错
os.system("hrun C:\Users\ws\Desktop\login.yml")

WARNING Python 2 will retire in 445 days, why not move to Python 3?
ERROR !!!!!!!!!! exception stage: load tests !!!!!!!!!!
RuntimeError: maximum recursion depth exceeded while calling a Python object

直接在 dos 命令行里运行正常,这是什么原因?
@debugtalk

doudou-china 发表于 2018年10月12日

好的,我升级下 Python,多谢您啦
@debugtalk

fzoo 发表于 2018年10月24日

@debugtalk

api: def: search_house($page, $pagesSize)
sutie: api: search_house(, ) 2 个值都为空 执行用例时实际传入的是 : search_house(‘’, 'sSize')

会飞的西瓜 发表于 2018年12月14日

大佬,有 Windows 的安装教程么?

冯一博 发表于 2019年02月14日

@debugtalk 现在支持 form-data 吗?

BBadBoYYY 发表于 2019年01月26日

没有可视化界面的么?web 端或者客户端

冯一博 发表于 2019年02月14日

@debugtalk 更新的 2.0 版本,不再支持引用 api 时可以传参了吗?例:

  • test: name: 发送短信验证码 (注册) api: api_peso2go_gateway_user_sendSmsCode_POST(APP_SMS001)

参数为 api 中的 1 个字段,定义为类型。该接口不同类型有不同用途,写 api 是将其定为变量

luna 发表于 2019年02月20日

@debugtalk 部分同事转换用例报 har2case: error: unrecognized arguments: 1111.yml,这种报错解决方法是啥

cccyq 发表于 2019年03月19日

@debugtalk 请问 httpRunner 可以支持场景自动化测试么?可以将上个接口的返回值放在上下文中,供下一个接口使用么

urq-1 发表于 2019年04月21日

遇到请求被重定向的情况,我初始请求中的 cookie 不会被完全带着请求被定向的 url,这样重定向之后访问就会失败,这种情况要怎么解决呢。@degubtalk求老师指教

wenjxu 发表于 2019年04月24日

@debugtalk 你好,在测试接口需要 ssl 证书验证,怎么能跳过这个验证呢?

Prowess 发表于 2019年05月10日

有个小问题不知道有人遇到过没:

Prowess 发表于 2019年05月10日

测试登录的时候,该地址登录成功后,重定向至主页,抓包 status code 是 302,但是转化为测试用例后,测试断言时该登录 status code 返回 200,并不是 302

Green hand 发表于 2019年05月10日

INFO Loading environment variables from D:\Document\salary_caiting.env
ERROR !!!!!!!!!! exception stage: parse tests !!!!!!!!!!
httprunner.exceptions.VariableNotFound: base_url

请问这个怎么解决啊?@debugtalk

Elsie 发表于 2019年07月11日

ERROR !!!!!!!!!! exception stage: load tests !!!!!!!!!!
AttributeError: module 'yaml' has no attribute 'FullLoader'
@debug
楼主看下啊

debugtalk 发表于 2019年07月11日

@xixixueling 已经修复了,升级到 2.2.3 即可。或者将 PyYAML 升级到 5.1 也行。

liu-navacat 发表于 2019年07月16日

@debugtalk @xiaofeng 支持 form-data 吗?

迷途小羔羊 发表于 2019年07月22日

python 3.6.5
httprunner 2.2.3
windows
用例中的参数值是中文时报编码错误,请问谁知道什么原因?谢谢!
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 361-363:
Body ('用户名') is not valid Latin-1. Use body.encode('utf-8') if you want to s
end it encoded in UTF-8.
看错误好像 request 的参数编码不对,框架对参数没有进行编码处理还是什么原因呢?

vic 发表于 2019年11月29日

使用后感觉......python 版的 jmeter?

qiChow 发表于 2019年07月25日

@debugtalk 大神,请问下如果我用 httprunner 测试接口的时候,post 请求参数里头有 file 参数(比如上传一个图片),这个 yaml 文件该怎么写呢?我抓包看了下,然后把 har——》yml 了,看到 yml 文件里对应的 data 的数据里头好像把图片解析出来了,这种情况怎么去写 yml 用例呢?

danli2019 发表于 2019年08月08日

httprunner.exceptions.VariableNotFound: UserName

danli2019 发表于 2019年08月08日

报错:httprunner.exceptions.VariableNotFound: UserName
config:
name: testcase description
parameters:
- UserName-Password:Sequential
variables: {}
teststeps:

  • name: /auth/jwt/user/login request: data: '' headers: User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 method: POST params: UserName: $UserName Password: $Password UserName-Password.csv 文件在 testcase 目录下,不知道为什么运行的时候报错,请前辈指点
米酒 发表于 2019年09月05日

怎么实现需要判断、循环的业务流程呢,初步了解,感觉 debugtalk.py 里的方法只能作为参数应用于用例内部,那么怎么组织用例的执行逻辑呢

心意已决 发表于 2020年11月25日

1234

wyb407 发表于 2019年08月12日

求助!
INFO HttpRunner version: 2.2.5
WARNING Invalid test file format: C:\Users\Administrator\Desktop\新建文件夹.\sexualAndAge.yml
!!!!!!!!!! exception stage: load tests !!!!!!!!!!
Traceback (most recent call last):
File "d:\python\lib\runpy.py", line 193, in run_module_as_main
"
main", mod_spec)
File "d:\python\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "D:\python\Scripts\hrun.exe__main
_.py", line 9, in
File "d:\python\lib\site-packages\httprunner\cli.py", line 85, in main_hrun
runner.run(path, dot_env_path=args.dot_env_path)
File "d:\python\lib\site-packages\httprunner\api.py", line 276, in run
return self.run_path(path_or_tests, dot_env_path, mapping)
File "d:\python\lib\site-packages\httprunner\api.py", line 258, in run_path
tests_mapping = loader.load_tests(path, dot_env_path)
File "d:\python\lib\site-packages\httprunner\loader.py", line 899, in load_tests
__load_file_content(path)
File "d:\python\lib\site-packages\httprunner\loader.py", line 884, in __load_file_content
if not loaded_content:
UnboundLocalError: local variable 'loaded_content' referenced before assignment
文件在 testcase 目录下,不知道为什么运行的时候报错,请前辈指点

测试小白 发表于 2019年08月26日

请问,httprunner 在进行性能测试时,可以进行 locusts 的参数化吗,源码里的模板是直接定义,如果要进行 locusts 的参数化时需要在模板里修改吗

测试小白 发表于 2019年08月26日

@debugtalk 大神,求助,httprunner 在进行性能测试时,可以进行 locusts 的参数化吗,源码里的模板是直接定义,如果要进行 locusts 的参数化时需要在模板里修改吗

debugerliu 发表于 2019年10月18日

大佬,引用接口文档总是提示找不到,请赐教呢

wenjxu 发表于 2019年11月27日

HELLO,如果有个字段的值例如:preset_parameters:"{"$app_version"}" ,$app_version 其实一个字符串并没有引用变量。该怎么针对这个字段忽略引用变量的机制

wenjxu 发表于 2019年11月27日

$app_version 是后台接口字段必传的字符串值

wenjxu 发表于 2020年04月28日

最新版本 3.0.1.2 有个 bug,api 文件中 varialbe 变量解析报错

练素琼 发表于 2020年03月05日

楼主,为什么我用 debugtalk.py 文件中写的方法,通过 ${getcookie()} 这样子的方式根本取不到值啊,放在同一个目录下。
INFO HttpRunner version: 2.5.7
!!!!!!!!!! exception stage: load tests !!!!!!!!!!
list index out of range

没有放同一个目录下报这个错:
FO HttpRunner version: 2.5.7
ERROR failed to parse testcase: erp.yml, error: getcookie is not found.
WARNING parse failures occurred ...
dump file: D:\project\erp_api\api\logs\erp.parse_failed.json
ERROR failed to parse all cases, abort.
!!!!!!!!!! exception stage: parse tests !!!!!!!!!!

@debugtalk 求解答。

chen 发表于 2020年03月07日

最新版本 不是用 pipenv?

diaohanji 发表于 2020年04月06日

@lsq4590578 你的问题解决了 ? 我也碰到了相同的问题

aibreze 发表于 2020年04月14日

@lsq4590578 你的问题解决了 ? 我的是 HttpRunner version: 3.0.1,不知道哪里出问题了,不能使用 debugtalk.py 文件中写的方法

debugerliu 发表于 2020年04月14日

@aibreze 我知道为什么了,我也遇到了,刚刚解决

debugerliu 发表于 2020年04月14日

先定义,后使用

guoguoyuer 发表于 2020年04月17日

@wenjxu 亲,我也遇到这个问题了,请问你怎么解决的?

zhouhuiyin 发表于 2020年04月26日

@debugerliu 您好,请问你说的先定义后使用具体是指什么,我也遇到一样的问题,望回复

debugerliu 发表于 2020年05月13日

得先在顶部定义出来,下面才能使用,不能直接就在下面使用

debugerliu 发表于 2020年05月15日

@zhouhuiyin 你是在那一层使用的,API 层,还是 testcases 层,在 testcases 层使用是正常的

ZOO 发表于 2020年05月28日

https://cn.httprunner.org/挂了,麻烦修复下

debugtalk 发表于 2020年05月29日

更改地址了:https://docs.httprunner.org/

avrilchan 发表于 2020年06月01日

locust 启不来。。。打了一行东西就没了

F:\测试开发\demo\testcases>locusts -f 123.yml
[2020-06-01 14:50:49,687] DESKTOP-LHF0SEM/INFO/locust.main: Starting web monitor at *:8089

F:\测试开发\demo\testcases>

SmallWhite 发表于 2020年06月14日

httprunner3.0.11
哪位能告诉下为什么我执行成功后只有 log 没有 Html 那个炫酷的页面文件啊,reports 里什么也没有

hellodjc11 发表于 2020年06月18日

老板,文档网站都打不开了

大海 发表于 2020年07月02日
null 发表于 2020年07月03日

3.0 不兼容 2.0 的用例嘛 然后 3.0 的报告是抛弃了 2.0 的那个报告嘛

我在圈里很多年 发表于 2020年07月21日

这是什么报错,求大神指教
Traceback (most recent call last):
File "/Users/bianwancheng/PycharmProjects/untitled/httprun3/testcase/h3_test.py", line 55, in
TestCaseRequestWithTestcaseReference().test_start()
File "/usr/local/lib/python3.8/site-packages/httprunner/runner.py", line 455, in test_start
return self.run_testcase(
File "/usr/local/lib/python3.8/site-packages/httprunner/runner.py", line 358, in run_testcase
extract_mapping = self.run_step(step)
File "/usr/local/lib/python3.8/site-packages/httprunner/runner.py", line 297, in __run_step
step_data = self.
run_step_testcase(step)
File "/usr/local/lib/python3.8/site-packages/httprunner/runner.py", line 246, in __run_step_testcase
testcase_cls()
File "/usr/local/lib/python3.8/site-packages/httprunner/runner.py", line 384, in run
return self.run_testcase(testcase_obj)
File "/usr/local/lib/python3.8/site-packages/httprunner/runner.py", line 351, in run_testcase
step.variables = parse_variables_mapping(
File "/usr/local/lib/python3.8/site-packages/httprunner/parser.py", line 457, in parse_variables_mapping
parsed_value = parse_data(
File "/usr/local/lib/python3.8/site-packages/httprunner/parser.py", line 404, in parse_data
return parse_string(raw_data, variables_mapping, functions_mapping)
File "/usr/local/lib/python3.8/site-packages/httprunner/parser.py", line 329, in parse_string
func = get_mapping_function(func_name, functions_mapping)
File "/usr/local/lib/python3.8/site-packages/httprunner/parser.py", line 280, in get_mapping_function
raise exceptions.FunctionNotFound(f"{function_name} is not found.")
httprunner.exceptions.FunctionNotFound: sum_two is not found.

weiluting 发表于 2020年07月21日

想咨询下 httprunner 哪个版本支持基于 httprunner,解析 postman,生成用例集

余good' 发表于 2020年08月21日

只有我一个人感觉 3X 比 2.X 难用吗,而且 3.X 还不向下兼容 2.X 的用例。。。

weiluting 发表于 2020年08月26日

@debugtalk 我是杭州天谷信息科技有限公司的测试,我们公司是 httprunner 的深度用户。因为我看到 httprunner 针对.har 文件有 har2case 库,因为我们公司的接口文档格式都是 swagger 的,所以我近期做了针对 swaager 接口文档直接生成 httprunner 的 case。swagger2case,主要实现的功能:
功能 1: 全量 API 自动生成,将所有的 swagger 接口全量生成标准形式。
功能 2:增量 API 新增,将增量的 API 自动生成
功能 3:增量 TAG 新增,将所有的 TAG 下的接口自动生成
功能 4:全量 API,自动生成必填项场景 testcase
功能 5:增量 API 新增,将增量的 API 自动生成必填项场景 testcase
功能 6:增量 TAG 新增,将所有的 TAG 下的接口自动生成必填项场景 testcase
功能 7:将 tag 下的 testcase 自动生成 testsuite
因为我查找了很多相关的资料,也是看到你们公司说做 swagger2case 和 postman2case,但是目前为止在 python 的三方库都没有看到,所以这边也是想把我做的 swagger2case 开源出来,这边来咨询下你们官方是否已经实现了,没有我这边可以开源出来呢

名门翘楚 发表于 2020年09月15日

https://api.postalpincode.in/pincode/110001这个接口怎么在框架里报错勒
self =
param = None

def test_start(self, param: Dict = None) -> "HttpRunner":
"""main entrance, discovered by pytest"""
self.init_tests()
self.project_meta = self.project_meta or load_project_meta(
self.config.path
)
self.
case_id = self.case_id or str(uuid.uuid4())
self.
log_path = self.log_path or os.path.join(
self.
project_meta.RootDir, "logs", f"{self.case_id}.run.log"
)
log_handler = logger.add(self.
log_path, level="DEBUG")

# parse config name
config_variables = self.config.variables
if param:
config_variables.update(param)
config_variables.update(self.
session_variables)
self.config.name = parse_data(
self.
config.name, config_variables, self.__project_meta.functions
)

if USE_ALLURE:
# update allure report meta
allure.dynamic.title(self.config.name)
allure.dynamic.description(f"TestCase ID: {self.
case_id}")

logger.info(
f"Start to run testcase: {self.config.name}, TestCase ID: {self.case_id}"
)

try:

return self.run_testcase(
TestCase(config=self.config, teststeps=self.teststeps)
)

/usr/local/lib/python3.8/site-packages/httprunner/runner.py:455:


/usr/local/lib/python3.8/site-packages/httprunner/runner.py:359: in run_testcase
extract_mapping = self.run_step(step)
/usr/local/lib/python3.8/site-packages/httprunner/runner.py:295: in __run_step
step_data = self.
run_step_request(step)
/usr/local/lib/python3.8/site-packages/httprunner/runner.py:166: in run_step_request
resp = self.
session.request(method, url, **parsed_request_dict)
/usr/local/lib/python3.8/site-packages/httprunner/client.py:208: in request
self.data.req_resps = [
/usr/local/lib/python3.8/site-packages/httprunner/client.py:209: in
get_req_resp_record(resp_obj) for resp_obj in response_list
/usr/local/lib/python3.8/site-packages/httprunner/client.py:93: in get_req_resp_record
response_data = ResponseData(


???
E pydantic.error_wrappers.ValidationError: 3 validation errors for ResponseData
E body
E str type expected (type=type_error.str)
E body
E byte type expected (type=type_error.bytes)
E body
E value is not a valid dict (type=type_error.dict)

pydantic/main.py:346: ValidationError

Assertion failed

Assertion failed

xiongxiaoqing614 发表于 2020年10月31日

@weiluting 我们也准备做个类似的东西,能不能聊聊

名门翘楚 发表于 2020年11月02日

响应值是数组 [{"123":"123"}] 的格式就报错了,问下怎么解决前辈

harrynanan 发表于 2020年11月03日

请问有学习 httprunner 交流群吗?可以互相请教问题那种。

blackit520 发表于 2020年11月08日

请问 2.0 的用例,升级到 3.0 可以直接转换吗

576925214 发表于 2020年11月22日

httprunner3.X 支持数据库断言么?

wenzhengxu 发表于 2021年01月21日

@grtmgogo jmespath 中如果 key 是一个数字,key 必须单独使用双引号包围
dict_1 = {"0": {"a":1, "b":2}, "other": {"c": 3, "d": 4}}
path1 = jmespath.search("\"0\".a", dict_1)

杨乐 发表于 2021年05月19日

测试报告中 句柄无效怎么解决

徐汪成 发表于 2021年07月06日

中文文档?

barry 发表于 2021年07月15日

httprunner 能连接 redis 数据库吗 ?大佬

REXLEE 发表于 2022年02月23日

hrun -V 报错,httprunner 版本 3.1.6

debugtalk 发表于 2022年04月30日

用户文档更新:https://httprunner.com/docs/

mysn 发表于 2022年05月17日

A.yml

config:
name: "request methods testcase: reference testcase"
base_url: "https://postman-echo.com"
verify: False

teststeps:

name: request with functions
variables:
foo1: 111
testcase: testcases/demo_testcase_request.yml

B.yml
config:
name: "request methods testcase with functions"
base_url: "https://postman-echo.com"
verify: False

teststeps:

name: get with params
request:
method: GET
url: /get
params:
foo1: $foo1
headers:
User-Agent: HttpRunner/${get_httprunner_version()}
validate:
- eq: ["status_code", 200]

B.yml 仅做数据参数配置,数据从 A.yml 中去设置
4.0.0 是不是不支持这么写??

Angelia 发表于 2022年05月31日

有同学实现测试数据剥离的吗,比如单独创建 yml 文件用于存放测试数据,在 debugtalk 中实现方法去读取 yml 文件中的测试数据,以实现测试用例中调用测试数据定义尔不直接使用测试数据。 达到几个目标:

  1. 更改测试数据不需要更改测试用例
  2. 支持循环测试多个测试数据
  3. 不同测试环境只需要实现一套脚本
tester1.0 发表于 2022年06月28日

Q:Mac M1 安装遇到的问题如下
✔ Installing...
$ chmod +x hrp && mv hrp /usr/local/bin/
mv: rename hrp to /usr/local/bin/hrp: Permission denied
提示 Permission denied
A:解决方法:使用 sudo chmod -R 777 ...
执行如下命令
sudo chmod -R 777 /usr/local/bin/
Password:

完美解决~~~~

defect_finder 发表于 2024年01月17日

新版 4.3.6 版本,运行脚本,报错 [ERROR] fungo: exec command failed: error="exit status 1" stderr=""
hrp exit 1,请问是什么原因呢

vae 发表于 2024年05月14日

支持文件测试吗?比如 https 接口,数据准备包含文件内容替换、sftp 操作等

daixuwei 发表于 2024年09月04日

debugtalk 似乎无法通过 from ... import 引用自定义的函数了,版本 httprunner==4.3.6

daixuwei 发表于 2024年09月04日

debugtalk 里引用自定义.py 的函数,该函数如果再引用函数,这样 debugtalk rpc 报错了,不知道为什么 1.5.8 版本的就可以,报错的版本是 4.3.5