HttpRunner HttpRunnerManager 正式发布

尹全旺 · 2018年03月04日 · 最后由 瑾沐沐 回复于 2018年05月04日 · 5138 次阅读
本帖已被设为精华帖!

HttpRunnerManager

由于年后工作地方更换,V2.0 版本这才迟迟与大家见面,新版本主要增加了定时任务,异步执行,报告持久化、日志保存以及数据类型支持,QQ 群欢迎提问:628448476。https://github.com/HttpRunner/HttpRunnerManager

流程说明

  1. 登录后首先选择新增一个项目,录入一些基本信息
  2. 用例或者配置信息是属于模块的,所以为刚才添加的项目添加子模块,默认只有一级子模块
  3. 添加完毕后我们可以看到项目列表或者模块列表相关信息,可以看到下属一个子模块,用例配置都为 0
  4. 平台已经支持环境管理,当前这一步不是必须的,接口 url 建议只写地址,host 和 port 单独写在环境里面比较好
  5. 接下来就是添加用例或者配置,注意:用例里的 variables 支持定义变量,在当前 test 有效,也就是说 request 的请求数据,headers,validate 都可以 $key 形式引用,extract 是抽取接口返回值,可以给 validate 引用也可以给 include 的 test 引用,自定义的函数支持 $(fun()) 方式引用,config 可以录入接口的基本请求参数和 headers,只需在用例的 include 引入就好
  6. 配置或者用例添加好后可以在列表查看,可以单个用例或者用例批量运行,同步方式
  7. 也可以按照模块或者项目单个或者批量形式,默认异步执行,后期增加选项选择同步还是异步方式
  8. 支持添加定时任务,cortnab 表达式,注意模块为空就是整个项目为维度,当然也支持模块级的定时任务
  9. 任务可以在线查看,可以开启或者关闭删除等,但是不支持二次编辑,如果信息错误必须删除重新添加
  10. 所有异步执行的或者定时任务报告都会存储在数据库,可在线查看,目前没有提供下载功能
  11. 任务执行状态可在线查看,实时监控,需要自己更改 base.html 任务监控 a 标签的 url 地址,为 flower 服务 ip 地址即可

部署说明

  1. 安装 mysql 数据库服务端 (推荐 5.7+),并设置为 utf-8 编码,创建相应 HttpRunner 数据库,设置好相应用户名、密码,启动 mysql

  2. 修改:HttpRunnerManager/HttpRunnerManager/settings.py 里 DATABASES 字典相关配置:NAME(默认 HttpRunner)
    USER(用户名,建议 root 用户,需要有增删改查权限!)、PASSWORD(对应登录用户名密码)、HOST(数据库所在服务器 ip 地址)
    PORT(数据库服务监听端口,默认 3306)

  3. 安装 rabbitmq 消息中间件,service rabbitmq-server start 启动服务,访问:http://host:15672/#/ host 即为你部署 rabbitmq 的服务器 ip 地址
    username:guest、Password:guest, 成功登陆即可

  4. 修改:HttpRunnerManager/HttpRunnerManager/settings.py 里 BROKER_URL = 'amqp://guest:guest@127.0.0.1:5672//'将 127.0.0.1 替换为步骤 3 的 host

  5. 命令行窗口执行 pip install -r requirements.txt 安装工程所依赖的库文件

  6. 命令行窗口切换到 HttpRunnerManager 目录,执行 python manage.py makemigrations ApiManager 生成数据库迁移脚本

  7. 执行 python manage.py migrate 对应 HttpRunner 数据库生成相应表结构

  8. 执行 python manage.py createsuperuser 根据提示输入用户名,邮箱,密码

  9. 执行 python manage.py runserver

  10. shell 或 dos 窗口切换到 HttpRunnerManager 目录执行:python manage.py celery -A HttpRunnerManager worker --loglevel=info 启动 worker

  11. shell 或 dos 窗口切换到 HttpRunnerManager 目录执行:python manage.py celery beat --loglevel=info 开启定时任务配置

  12. CLI 窗口执行:celery flower 访问:http://localhost:5555/dashboard 即可查看任务列表和状态

  13. 浏览器输入:http://127.0.0.1:8000/api/register/ 注册用户,开始享用

  14. 浏览器输入http://127.0.0.1:8000/admin/ 输入步骤 6 设置的用户名、密码,登录后台运维管理系统

后期计划

HttpRunner 数据驱动,hook 功能还未来得及开发,3.0 版本会同步支持,邮件提醒,报告下载,运行方式选择以及调用 java 进行加签加密后面会全部支持,谢谢大家支持

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 117 条回复 时间 点赞
simple [精彩盘点] TesterHome 社区 2018 年 度精华帖 中提及了此贴 01月07日 12:08
simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 14:44
尹全旺 关闭了讨论 05月04日 15:59
尹全旺 重新开启了讨论 05月04日 15:58
尹全旺 关闭了讨论 05月04日 15:58
尹全旺 关闭了讨论 05月04日 15:58

谢谢作者的无私分享

· #124 · 2018年04月26日
仅楼主可见

二维码扫不出来

尹全旺 回复

好的,灰常感谢。

letme 回复

老哥用的登录页面模板跟我用的一样😎

尹全旺 · #120 · 2018年04月12日 Author
仅楼主可见
仅楼主可见
蓝蓝 回复

可以看下 httprunner 脚本编写教程,抽取的可以给后面的 test 用也可以作为断言,json 抽取 :content.key 形式

没明白配置列表和 extract 那边怎么用?

Francis 回复

好的呢

github 上有类似的基于 flask 的接口自动化平台:
一些设计思想可以参考,比如定时任务
https://github.com/liwanlei/FXTest

蓝蓝 回复

看了代码才知道,采用.的方式,如下方式就能正确取到 response 中的字典或列表的某个值


怎么校验 response 中的 body 里面的 json 串的某个 key 的值?

Jacc 回复

感谢答复,这边已经处理好了

枫叶 回复

你新建数据库 HttpRunner 了吗,settings 里是这个名字

楼主好,这边运行 python manage.py makemigrations 这条命令报错,报错内容为 “django.db.utils.OperationalError: (1049, "Unknown database 'httprunner'")”,麻烦看下是什么情况哈

有 java 版的吗

看了下密码居然是明文的,,emmm 我觉得可以考虑将密码进行一种加密算法后存到数据库
然后用户登录的时候用同样的加密算法加密后和数据库的数据进行校验,这样安全性会不会好一点?

😂 感谢楼主的分享。
弄了一天终于部署到自己服务器上了,django 部署的坑是真不少。。

106楼 已删除

这个是后台管理界面,django 自带的,系统界面不是这样啊

匿名 #104 · 2018年04月02日
letme 回复

我看 demo 的界面很漂亮,难道这个还需要二次开发吗?

你用了 django 的 admin 方便呀,前端页面很难受,自己写的说不定更丑

匿名 #102 · 2018年03月31日


为什么我的界面长这么丑



跟我想写的好像啊,我目前前端就写了 3 个配置的增删改查

大佬用的 Python 几哦

支持,这是一个平台最基本的东西吧

仅楼主可见
仅楼主可见

断言应该如何添加?

谢谢,已经可以了

wenpeng 回复

查询下你的 db 是否有相应的表,然后登陆不是用邮箱,是用户名登陆,如果用户名或者密码错误没有做提示的

为啥我的登陆不成功??也没有报错?还有想问下你的数据库 <:makemigrations(生成数据库迁移脚本)、migrate(应用数据库脚本生成相应数据库表结构)>具体要怎么做,是不我的这个库没有创建成功

tttttttttggggg 测试平台从搭建到放弃 (二) 注册功能 中提及了此贴 03月12日 17:07
老马 回复

加我 qq 把 1263374981

仅楼主可见
石神 回复

近期打算去深圳,不能来杭州😂

尹全旺 回复

好的,我研究下怎么使用,谢谢

可以的呀,参考 httprunner 说明,支持 json 任意层次的,还有正则提取也可以

还有就是,目前发现在做结果断言的时候,没法对接口比较深的返回值进行解析,这是我使用方法有误么?

这个已经修复,请更新

@yinquanwang 你好,目前发现一个 bug【Comparator】每次选择的是【string_equal】但是加载出来就会变成【equal】,

Jacc 回复

啊啊啊我终于找到这个问题的原因了,case_name 为数字时就会出现这个问题,而且为数字时修改用例还会提示 “用例或配置已在该模块中存在,请重新命名”;
还有一个小问题,在 test report 页面,detail 那里的点击按钮,当我点击 traceback 按钮后,再点 log 那个,log 按钮经常为鼠标指针,变成小手反应迟钝;
还有一个建议,用例添加修改页面能不能不要左右滑动的,当我用鼠标选择某一行内容时,随便一拉就滑到别的页面了

仅楼主可见
石神 回复

去阿里水平不够😭

仅楼主可见

@yinquanwang 你好,支持环境选择配置嘛?比如,同一个用例,分别选择开发环境,或者线上环境来运行?

支持下,昨天开始安装,还没有安装成功。。

628448476,我建了个 qq 群,大家有问题在里面交流吧,一起完善

尹全旺 回复

我刚重新 clone 了一遍代码,还是报昨天的错。。这样的话有可能是环境的问题

Jacc 回复

本地测试下来,无论是 test,module,project 运行都不会有问题

Jacc 回复


我这边测试下来时间非法后台会返给前段的,不知你的代码是不是最新的呢

尹全旺 回复

这个看样子需要优先判断一下数据的类型再进行处理

尹全旺 回复

这个问题我发现过,忘记给作者提了,之后我找到逻辑提一下 bug 吧

Jacc 回复

和 mysql 没关系,看起来是前端提交了 int 类型的表单数据,后台用的切割字符串,所以报错,我本地没有问题,明天看了回复你

尹全旺 回复

嗯嗯,我新建一条用例,点运行,会报错(见截图),不知道是不是 python 版本问题
Traceback (most recent call last):
AttributeError: 'int' object has no attribute 'split'
ERROR Internal Server Error: /api/run_batch_test/
Traceback (most recent call last):
TypeError: run_batch_test() takes 1 positional argument but 2 were given

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
AttributeError: 'int' object has no attribute 'split'
[06/Mar/2018 21:53:26] "POST /api/run_batch_test/ HTTP/1.1" 500 134622

另外我用的驱动是 pymysql,mysql 是用 docker 起的,应该跟这个关系不大吧。。

Jacc 回复

我明天看下这个,本地我测试过没这个问题

kell 回复

果然,这样就可以:2018-03-06 21:32 ;输一串数字就会报那个 “开小差” 的错

Jacc 回复

我用这样日期格式可以:2018-03-25

建议组织个群,大家试用时学习交流下

Jacc 回复

这个异常后台捕捉了啊,不会抛出来的!你先从数据库复制个时间,我明天看下。。。

尹全旺 回复

请问,新增模块,日期有什么格式吗?
TypeError: expected string or bytes-like object
[06/Mar/2018 17:56:53] "POST /api/add_module/ HTTP/1.1" 500 20521

FelixKang 回复

session 默认有效期为 10min,在 setting.py 里

添加模块视图 views.py:

建议你开启前端调试工具看下,

尹全旺 回复

试了好多次 发现都是这样 0.0
这个接口文件是在哪个文件里呀 我去看看
还有就是我们设置的登录时间是多少呀 有时候莫名奇妙就要重新登录了

FelixKang 回复

我本地测试没有发现这个现象,这个出现原因可能是前端请求后台超时

已部署,谢谢楼主,加油

尹全旺 回复

找到解决办法了
ln -s /usr/local/mysql/bin/mysql_config /usr/local/bin/mysql_config
参考了这个文章:https://www.cnblogs.com/fengtengfei/p/5642173.html

尹全旺 回复


[06/Mar/2018 15:59:39] "POST /api/add_module/ HTTP/1.1" 500 21088

kell 回复

是不是没有装 mysql 服务端哦

FelixKang 回复

开小差?啥意思,之前代码有点问题 麻烦整体更新下 ,现在应该是可以的

安装 mysqlclient 依赖时报错了,有没有知道怎么改的亲呀

➜  HttpRunnerManager git:(master) ✗ sudo pip install mysqlclient==1.3.12
Password:
The directory '/Users/macpro/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/Users/macpro/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting mysqlclient==1.3.12
  Downloading https://mirrors.aliyun.com/pypi/packages/6f/86/bad31f1c1bb0cc99e88ca2adb7cb5c71f7a6540c1bb001480513de76a931/mysqlclient-1.3.12.tar.gz (89kB)
    100% |████████████████████████████████| 92kB 4.2MB/s
    Complete output from command python setup.py egg_info:
    /bin/sh: mysql_config: command not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/tmp/pip-build-yqjpse8f/mysqlclient/setup.py", line 17, in <module>
        metadata, options = get_config()
      File "/private/tmp/pip-build-yqjpse8f/mysqlclient/setup_posix.py", line 44, in get_config
        libs = mysql_config("libs_r")
      File "/private/tmp/pip-build-yqjpse8f/mysqlclient/setup_posix.py", line 26, in mysql_config
        raise EnvironmentError("%s not found" % (mysql_config.path,))
    OSError: mysql_config not found
邹龙龙 回复

谢谢啦

新增模块怎么一直开小差呀 0.0 想这些错误 我好在哪里可以看 然后分析是为啥

小L 回复

这个是我故意设计成这样的😁 😁 倒让大家踩坑了,后面我还是改成页面初始化就加载模块信息吧

donly 回复

😅 这个也是我的错,应该要先点击一下 project,然后才会加载 module 列表。我看见 project 已经选上了,以为会自动加载 molue 列表。。。

donly 回复

需要点击下项目才会触发 ajax 请求到后台拿到模块信息哦😁

donly 回复

这个我发现是前端的问题,你在项目的下拉框中选择一下,模块就能出来了

嗯,现在真遇到一个问题。模块列表中有模块,但是在新增配置和用例到时候,module 无法加载出模块列表,无法选择模块。这样保存到时候就会提示 “请先选择模块”。。

donly 回复

我错了。。。。注册之后到登录页面,系统自动填写了邮箱,但是其实应该是用户名,所以一直登录不了,,,,

44楼 已删除

昨天拉的代码,按照说明的部署下来也没有什么问题。但是,为什么注册后一直登录不进去,也没有任何提示信息呢??日志里面也没有任何报错信息。。。

厉害啊!加油加油。

已部署,一直关注着。学习学习。

有没有演示地址?

邹龙龙 回复

666

邹龙龙 回复

后面会支持的,只是现在还没来得及做

37楼 已删除

好像用例需要一个一个往里面添加,后面是否会支持现成 yml 格式用例批量导入呢?

huj 回复

①、将项目拉 clone 至本地,并按照 requirements.txt 安装必要的依赖库;
②、安装 mysql 服务端,推荐使用 mysql5.7+,安装方法参考下面链接即可https://jingyan.baidu.com/article/cd4c2979033a17756f6e6047.html
安装过程中可能会弹出提示缺少 vs2015 等必要组件的窗口,此时,点击底下 “execute” 即可,时间较长,耐心等待;
安装完成后,只需命令行新建 QCMANAGER 数据库,后面会用到;
进入数据库命令行状态:mysql -u root -p xxxxx(密码);
新建数据库:create database qcmanager;
③、更改 HttpRunnerManager/settings 里 DATABASES 相关配置:USER、PASSWORD、HOST、PORT;基本就是改下密码就行了;
④、命令行运行 django 命令:makemigrations(生成数据库迁移脚本)、migrate(应用数据库脚本生成相应数据库表结构);
这里可能要进入到项目的目录下,因为需要查找 manage.py 文件。然后命令行运行 python manage.py makemigrations,然后再运行 python manage.py migrate;
该项目是用 python3 来编写的,所以运行项目最好安装 python3.6,不然会提示很多语法和编码的错误;
命令行运行 runserver 启动服务 (开发者模式):python manage.py runserver 8000,然后打开地址http://localhost:8000/api/register/
应该够详细了吧😁

debugtalk HttpRunner 实现 Jinja2 自定义报告模板 中提及了此贴 03月05日 17:49
尹全旺 回复

你好,这个项目具体点的安装方法有吗?小白安装起来有点困难

佳佳 回复

你好,这个 bug 已经修复,多谢反馈

yuweixx 回复

多谢反馈

刚刚试了下,还需要这两个依赖包

pip install colorama
pip install colorlog
思寒_seveniruby 将本帖设为了精华贴 03月05日 13:04
在路上 回复

这个会比较难,现在底层都完全依赖于 Python-requests 库,近期也计划整合新出的 requests_html 库,所以只能支持 HTTP(S) 协议。

老马 回复

这个提议不错,后面应该会弄

仅楼主可见

支持开源!

佳佳 回复

谢谢反馈,bug 麻烦提交到 git 上😄 ,我会统一处理的

很赞,作为一枚测试,先提个 bug 为敬
如果有删除再添加的动作,这个 id 就会重复,然后提交参数就会。。。

下一步可以考虑延伸扩展支持其他协议,最后可以叫 Xrunner 哈

@yinquanwang 能否制作个 docker 部署

debugtalk 回复

太长了……

恒温 回复

感觉终究有一天 httprunner.org 域名会升值😂

qiangqing2018 回复

看来等了很久了😄

恒温 回复

😂 过奖了,产品还算不上

666 明天就训练开发试用

厉害了,终于出来了

厉害~做出产品来了。

13楼 已删除
程明远 回复

非常抱歉,代码昨天提交时可能操作有误,添加模块功能被删掉了。。。现在已经修复,更新 viws.py 文件即可!

Byron 回复

多谢支持😊

debugtalk 回复

多谢前辈打赏😊,定不辜负期望

程明远 回复

正在做饭😂,一会我看下,按理不会这样的!

尹全旺 回复

已打赏,一起将 HttpRunner 发扬光大 😀

使用新增模块功能是,填写好信息点击新增模块,但是在模块列表中并没有提交上去的模块信息。pycharm 中似乎有没有看到 post 请求,请问是哪里的操作问题吗




已部署成功,开始试用

尹全旺 回复

已打赏,继续努力

debugtalk 回复

已经上传打赏码了😁

贴个赞赏码哇,必须得赞赏一个。

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