1. 程式人生 > 實用技巧 >HTTPrunner manager 自動化測試平臺搭建

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

yum -y install nginx

   測試是否安裝完成,命令啟動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//