前言
在之前搭建的 HttpRunnerManager 接口测试平台, 我们还有一些功能没有实现, 比如异步执行, 定时任务, 任务监控等, 要完成异步执行, 需要搭建 RabbitMQ 等环境, 今天我们就来实现这些功能.
需要在 Linux 上提前准备的环境 (下面是本人搭建时的环境):
- ,HttpRunnerManager(可参考文章: Linux 下搭建 HttpRunnerManager 接口测试平台)
- ,RabbitMQ 3.7.6 (可参考文章: Linux 下安装 RabbitMQ)
用例执行方式
HttpRunnerManager 中, 模块和项目的用例执行时可选择为同步或者异步方式, 在没搭建 RabbitMQ 环境时, 我们只能通过同步的方式来执行, 执行完之后立即返回报告.
如果选择异步的方式, 就是在后台执行, 在异步执行完毕后, 我们可以去查看或下载测试报告. 但如果没有搭建 RabbitMQ 环境, 那么异步执行会报错, 并得不到测试报告.
启动 RabbitMQ 服务
首先, 要实现异步执行, 我们需要启动 RabbitMQ 服务, 并确保能够正常访问其 web 控制台管理界面, 如下:
修改 settings.py 配置
我们需要简单修改一下 settings.py 配置文件, 需要修改的地方如下 (大约在 settings.py 中第 155 行左右):
可以通过 VIM 命令进行修改, 修改之后如下 (根据自己实际情况修改):
说明:
admin:123456 是 RabbitMQ 中的用户名和密码
192.168.89.128 是 rabbitmq-server 所在服务器 ip 地址
5672
是 RabbitMQ 启动时的默认端口, 注意不是
15672
端口,
15672
是 Web 控制台管理界面的访问端口.
启动 worker
在 HttpRunnerManager 的根目录 ( manage.py 所在的路径), 通过以下命令启动 worker:
python3 manage.py celery -A HttpRunnerManager worker --loglevel=info
也可以通过后台执行的方式启动 worker:
nohup python3 manage.py celery -A HttpRunnerManager worker --loglevel=info>worker.log 2>&1 &
如果是在后台运行 worker 的日志, 将输出到 worker.log 下.
tornado 报错
我在启动 worker 时, 遇到了如下问题:
在网上查了下, 发现是因为 tornado 版本太高了, tornado6 之后版本就弃用了 tornado.Web.asynchronous 这种写法, 查看当前 tornado 的版本, 命令如下:
pip3 show tornado
查看后发现 tornado 版本为 6.0.3 , 于是尝试网上说的将 tornado 降级回到 5.1.1 版本, 命令如下:
卸载已安装的 tornado 版本: pip3 uninstall tornado
安装指定的 tornado 版本: pip3 install tornado==5.1.1
- [root@bogon HttpRunnerManager-master]# pip3 uninstall tornado
- Uninstalling tornado-6.0.3:
- Would remove:
- /root/python36/lib/python3.6/site-packages/tornado-6.0.3-py3.6.egg-info
- /root/python36/lib/python3.6/site-packages/tornado/*
- Proceed (y/n)? y
- Successfully uninstalled tornado-6.0.3
- [root@bogon HttpRunnerManager-master]# pip3 install tornado==5.1.1
- Collecting tornado==5.1.1
- Downloading https://files.pythonhosted.org/packages/e6/78/6e7b5af12c12bdf38ca9bfe863fcaf53dc10430a312d0324e76c1e5ca426/tornado-5.1.1.tar.gz (516kB)
100% |████████████████████████████████| 522kB 874kB/s
- Installing collected packages: tornado
- Running setup.py install for tornado ... done
- Successfully installed tornado-5.1.1
接着, 再次启动 worker, 可以发现没有报错了, 启动成功!
启动定时任务监听器
在 HttpRunnerManager 的根目录 ( manage.py 所在的路径), 通过以下命令启动定时任务 celery:
python3 manage.py celery beat --loglevel=info
也可以通过后台执行的方式启动 celery:
nohup python3 manage.py celery beat --loglevel=info>celery.log 2>&1 &
启动成功时, 显示如下内容:
- [root@bogon HttpRunnerManager-master]# python3 manage.py celery beat --loglevel=info
- celery beat v3.1.26.post2 (Cipater) is starting.
- __ - ... __ - _
- Configuration ->
- . broker -> amqp://admin:**@192.168.89.128:5672//
- . loader -> celery.loaders.App.AppLoader
- . scheduler -> djcelery.schedulers.DatabaseScheduler
- . logfile -> [stderr]@%INFO
- . maxinterval -> now (0s)
启动任务监控后台
要完成任务监控, 需要启动 flower, 这个我们在最开始搭建环境时已经安装, 是在 requirements.txt 中, 如果没有安装的话可以通过 pip3 进行安装.
接下来启动 flower 环境, 直接执行命令: flower.
也可以通过后台执行的方式启动 flower:
nohup flower>flower.log 2>&1 &
如果出现报错: bash: flower: command not found, 提示找不到相关命令, 那么就需要先设置软链接. 首先, 查找到 flower 的路径, 然后将该路径添加到 /usr/bin/ 下即可, 最后执行命令: flower, 启动 flower 时默认的端口是 5555.
- [root@bogon HttpRunnerManager-master]# flower
- bash: flower: command not found
- [root@bogon HttpRunnerManager-master]# find / -name flower
- /root/python36/bin/flower
- /root/python36/lib/python3.6/site-packages/flower
- [root@bogon HttpRunnerManager-master]# ln -s /root/python36/bin/flower /usr/bin/flower
- [root@bogon HttpRunnerManager-master]# flower
- [I 191229 17:29:58 command:139] Visit me at http://localhost:5555
- [I 191229 17:29:58 command:144] Broker: amqp://guest:**@localhost:5672//
- [I 191229 17:29:58 command:147] Registered tasks:
- ['celery.backend_cleanup',
- 'celery.chain',
- 'celery.chord',
- 'celery.chord_unlock',
- 'celery.chunks',
- 'celery.group',
- 'celery.map',
- 'celery.starmap']
最后, 检查一下 5555 端口是否已开放, 在 Windows 的浏览器下输入地址访问 flower 管理界面: http://ip 地址: 5555/
异步执行
到这里, 我们在模块和项目执行用例时, 选择异步执行方式, 便不会报错了.
当异步执行完毕后, 可以在报告管理中查看报告.
定时任务
设置定时任务是在测试计划的菜单栏之下.
新增定时任务, 相关的 定时任务 crontab 语法 , 这里不多介绍, 大家可以去网上查找学习.
按上面设置定时任务之后, 每 5 分钟用例会执行一次, 然后可以去报告管理界面查看相关报告.
任务监控
系统设置下的任务监控, 其实就是之前的 flower 监控环境. 但界面上对应的链接地址可能不对, 我们需要简单修改一下.
需要修改的文件是 templates/base.html , 具体如下 (大约在 base.HTML 第 134 行左右, 根据自己实际情况修改):
修改好任务监控的链接地址之后, 再次刷新页面, 对应的链接地址就会更新了, 我们点击任务监控菜单, 就可以进入到 flower 任务监控后台界面.
OK, 到这里, 我们部署的 HttpRunnerManager 接口测试平台已完成, 已成功搭建完成了异步执行, 定时任务及任务监控的功能.
来源: https://www.cnblogs.com/wintest/p/12115880.html