前言
在之前搭建的HttpRunnerManager接口測試平台,我們還有一些功能沒有實現,比如異步執行、定時任務、任務監控等,要完成異步執行,需要搭建 RabbitMQ
等環境,今天我們就來實現這些功能。
需要在Linux上提前准備的環境(下面是本人搭建時的環境):
1,HttpRunnerManager(可參考文章:Linux下搭建HttpRunnerManager接口測試平台)
2,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接口測試平台已完成,已成功搭建完成了異步執行、定時任務及任務監控的功能。