HTTPrunner manager 自動化測試平臺搭建
HttpRunnerManager 是對HttpRunner的二次封裝,提供了友好的web介面,為了部署這個為研究了好幾天,現在整理部署文件
該專案地址在github上,大家可以下載來使用,地址為https://github.com/HttpRunner/HttpRunnerManager
下載到伺服器
簡介:
基於HttpRunner的介面自動化測試平臺: `HttpRunner`_, `djcelery`_ and `Django`_. HttpRunner手冊: http://cn.httprunner.org/
Key Features
------------
- 專案管理:新增專案、列表展示及相關操作,支援用例批量上傳(標準化的HttpRunner json和yaml用例指令碼)
- 模組管理:為專案新增模組,用例和配置都歸屬於module,module和project支援同步和非同步方式
- 用例管理:分為新增config與test子功能,config定義全部變數和request等相關資訊 request可以為公共引數和請求頭,也可定義全部變數
- 場景管理:可以動態載入可引用的用例,跨專案、跨模快,依賴用例列表支援拖拽排序和刪除
- 執行方式:可單個test,單個module,單個project,也可選擇多個批量執行,支援自定義測試計劃,執行時可以靈活選擇配置和環境,
- 分佈執行:單個用例和批量執行結果會直接在前端展示,模組和專案執行可選擇為同步或者非同步方式,
- 環境管理:可新增執行環境,執行用例時可以一鍵切換環境
- 報告檢視:所有非同步執行的用例均可線上檢視報告,可自主命名,為空預設時間戳儲存,
- 定時任務:可設定定時任務,遵循crontab表示式,可線上開啟、關閉,完畢後支援郵件通知
- 持續整合:jenkins對接,開發中。。。
好了,開始部署
第一模組
1、安裝mysql資料庫服務端(推薦5.7+),並設定為utf-8編碼,建立相應HttpRunner資料庫,設定好相應使用者名稱、密碼,啟動mysql
安裝mysql請參考https://blog.csdn.net/wu2700222/article/details/80520085
新建一個數據庫HttpRunner。本次中的資料庫用的是192.168.1.68這臺伺服器的,和WK服務一起共用該資料庫
2. 修改:HttpRunnerManager/HttpRunnerManager/settings.py裡DATABASES字典和郵件傳送賬號相關配置
if DEBUG:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'HttpRunner', # 新建資料庫名
'USER': 'admin', # 資料庫登入名
'PASSWORD': 'admin12!@', # 資料庫登入密碼
'HOST': '192.168.1.68', # 資料庫所在伺服器ip地址
'PORT': '3306', # 監聽埠 預設3306即可
}
}
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'), # 靜態檔案額外目錄
)
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'HttpRunner', # 新建資料庫名
'USER': 'admin', # 資料庫登入名
'PASSWORD': 'admin12!@', # 資料庫登入密碼
'HOST': '192.168.1.68', # 資料庫所在伺服器ip地址
'PORT': '3306', # 監聽埠 預設3306即可
}
}
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
EMAIL_SEND_USERNAME = '[email protected]' # 定時任務報告發送郵箱,支援163,qq,sina,企業qq郵箱等,注意需要開通smtp服務
EMAIL_SEND_PASSWORD = '***' # 郵箱密碼
3. 安裝rabbitmq訊息中介軟體,啟動服務,(rabbitmq部署完後會有兩個埠,一個是5672,一個是15672,15672為web服務埠)訪問:http://host:15672/#/
我這本做了外網埠對映
http://139.198.1.168:56721/#/賬號密碼為:guest/blm123
安裝手冊參考https://blog.csdn.net/zhouyongku/article/details/53676837
4. 修改:HttpRunnerManager/HttpRunnerManager/settings.py裡worker相關配置
djcelery.setup_loader()
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = 'Asia/Shanghai'
BROKER_URL = 'amqp://guest:[email protected]:5672//'# if DEBUG else 'amqp://blm:[email protected]:5672//'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
5. 命令列視窗執行pip3 install -r requirements.txt 安裝工程所依賴的庫檔案
6. 命令列視窗切換到HttpRunnerManager目錄 生成資料庫遷移指令碼,並生成表結構
```bash
python manage.py makemigrations ApiManager #生成資料遷移指令碼
python manage.py migrate #應用到db生成資料表
```
7. 建立超級使用者,使用者後臺管理資料庫,並按提示輸入相應使用者名稱,密碼,郵箱。 如不需用,可跳過此步驟(admin2/admin2test)
```bash
python manage.py createsuperuser
```
8. 啟動服務,
```bash
python manage.py runserver 0.0.0.0:8000
```
9. 啟動worker, 如果選擇同步執行並確保不會使用到定時任務,那麼此步驟可忽略
```bash
cd /root/HttpRunnerManager
python manage.py celery -A HttpRunnerManager worker --loglevel=info #啟動worker
python manage.py celery beat --loglevel=info #啟動定時任務監聽器
celery flower --broker=amqp://guest:[email protected]:5672// #啟動任務監控後臺
```
10. 訪問:http://localhost:5555/dashboard 即可檢視任務列表和狀態
11. 瀏覽器輸入:http://127.0.0.1:8000/api/register/ 註冊使用者,開始盡情享用平臺吧
12. 瀏覽器輸入http://127.0.0.1:8000/admin/ 輸入步驟6設定的使用者名稱、密碼,登入後臺運維管理系統,可後臺管理資料
第二模組
上面的環境ok後,下面就要開始安裝生產環境,因為用python執行的都是線上執行的,我們需要用nginx+uwsgi轉為後端執行
其中web頁面是用了nginx+uwsgi,其它三個後臺任務是使用screen來開多視窗實現的
參考資料為https://www.cnblogs.com/chenice/p/6921727.html
使用uwsgi配置檔案啟動django專案
第一步:在django專案同級目錄建立script目錄,用於存放配置指令碼等等
cd/root/HttpRunnerManager
mkdir script
第二步:編輯uwsgi.ini檔案
[uwsgi]
# Django-related settings
project = HttpRunnerManager
chdir =/root/HttpRunnerManager/
module = HttpRunnerManager.wsgi:application
#uid = www-data
#gid = www-data
uid=root
pid=root
master = true
vacuum=true
thunder-lock=true
enable-threads=true
harakiri=30
post-buffering=4096
daemonize=/root/HttpRunnerManager/script/uwsgi.log
workers = 5
pidfile=/root/HttpRunnerManager/script/uwsgi.pid
socket = /root/HttpRunnerManager/script/uwsgi.sock
chmod-socket = 664
vacuum = true
static-map=/static/=/root/HttpRunnerManager/static
http=0.0.0.0:8000
啟動專案:
[root@i-lj205vf5 conf.d]# uwsgi --ini /root/HttpRunnerManager/uwsgi.ini
[uWSGI] getting INI configuration from /root/HttpRunnerManager/uwsgi.ini
[uwsgi-static] added mapping for /static/ => /root/HttpRunnerManager/static
如果要停止專案:
uwsgi --stop /root/HttpRunnerManager/script/uwsgi.pid
啟動成功後就能http訪問了,埠8000
至此,uwsgi+django就完美結合了,但是,光有uwsgi還不夠,uwsgi處理動態請求能力高,但對於靜態請求(如static檔案,css,js檔案等)處理能力差,此時就要結合nginx一起使用
安裝nginx
1 |
|
測試是否安裝完成,命令啟動nginx
service startnginx
這時候預設會啟動80埠
該80埠的預設專案,在配置檔案/etc/nginx/nginx.conf 中,如果不需要可以註釋掉,這裡特別需要注意的是頭部的user nginx需要更改為user root;不然後面訪問uwsgi的時候報錯,許可權不足
cd /etc/nginx/conf.d/
進入conf.d資料夾建立配置檔案httprunner.conf
vimhttprunner.conf
server { # 這個server標識我要配置了
listen 81; # 我要監聽那個埠
server_name 139.198.1.168 *.boluome.com; # 你訪問的路徑前面的url名稱
access_log /var/log/nginx/access.log main; # Nginx日誌配置
charset utf-8; # Nginx編碼
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支援壓縮的型別
error_page 404 /404.html; # 錯誤頁面
error_page 500 502 503 504 /50x.html; # 錯誤頁面
# 指定專案路徑uwsgi
location / { # 這個location就和咱們Django的url(r'^admin/', admin.site.urls),
include uwsgi_params; # 匯入一個Nginx模組他是用來和uWSGI進行通訊的
uwsgi_connect_timeout 30; # 設定連線uWSGI超時時間
#uwsgi_pass 139.198.1.168:8000;
uwsgi_pass unix:///root/HttpRunnerManager/script/uwsgi.sock; # 指定uwsgi的sock檔案所有動態請求就會直接丟給他
}
# 指定靜態檔案路徑
location /static/ {
alias /root/HttpRunnerManager/static/;
}
}
修改好配置檔案後重啟服務
service nginx restart
至此,Django + Uwsgi + Nginx 的生產環境部署就完成了
第三模組
安裝screen
yum install screen -y
接著我們使用命令開啟三個視窗分別起三個後臺服務
進入第一個視窗輸入 screen -S job
自動進入視窗後執行
cd /root/HttpRunnerManager/
python manage.py celery -A HttpRunnerManager worker --loglevel=info #啟動worker
然後退出,退出命令為control+a+d
進入第二個視窗輸入screen -S job2
cd /root/HttpRunnerManager/
python manage.py celery beat --loglevel=info #啟動定時任務監聽器
然後退出,退出命令為control+a+d
進入第三個視窗輸入screen -S job3
cd /root/HttpRunnerManager/
celery flower --broker=amqp://guest:[email protected]:5672//
該服務正常啟動後,埠5555也執行起來了
然後退出,退出命令為control+a+d
輸入命令[root@i-lj205vf5 nginx]# screen -ls 檢視當前執行的視窗
如果再次進入screen -r job,如果報錯可以執行screen -d job,再輸入 screen -r job
最後總結如下:
rabbitmq 地址:http://139.198.1.168:56721/#/指向內網 192.168.1.69:15672,登入賬號:guest/blm123
任務檢視頁面:http://httprunmanager_job.boluome.com/指向內網192.168.1.69:5555
管理頁面:http://httprunmanager.boluome.com/admin/指向內網192.168.1.69:81 nginx地址
本次用的資料地址為192.168.1.68:3306 賬號密碼:admin/admin12!@
常用啟動命令如下:
停止服務
uwsgi --stop /root/HttpRunnerManager/script/uwsgi.pid
啟動服務
[root@i-lj205vf5 conf.d]# uwsgi --ini /root/HttpRunnerManager/uwsgi.ini
開啟服務:
service nginx start
nohupcelery flower --broker=amqp://guest:[email protected]:5672// & #啟動任務監控後臺
視窗任務:
python manage.py celery -A HttpRunnerManager worker --loglevel=info #啟動worker
python manage.py celery beat --loglevel=info #啟動定時任務監聽器
celery flower --broker=amqp://guest:[email protected]:5672//