https://github.com/HttpRunner/HttpRunnerManager
HttpRunnerManager
Design Philosophy
基於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對接,開發中。。。
對HttpRunnerManager的學習做個記錄....環境部署均可在github中查看。記錄部署中存在改動的地方。
本地開發環境部署
拉代碼下載
ubuntu@MITTE-SERVER:/opt$ git clone https://github.com/HttpRunner/HttpRunnerManager.git
Cloning into 'HttpRunnerManager'...
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 3313 (delta 0), reused 0 (delta 0), pack-reused 3312
Receiving objects: 100% (3313/3313), 36.25 MiB | 971.00 KiB/s, done.
Resolving deltas: 100% (2154/2154), done.
Checking connectivity... done.
-
安裝mysql數據庫服務端(推薦5.7+),並設置為utf-8編碼,創建相應HttpRunner數據庫,設置好相應用戶名、密碼,啟動mysql
在MySQL安裝目錄的 bin 目錄下執行命令:
mysqld --initialize --console
執行完成后,會打印 root 用戶的初始默認密碼,比如:
2018-06-15T08:35:07.750836Z 0 [System] [MY-013169] [Server] G:\Tools\mysql\mysql-8.0.11-winx64\mysql-8.0.11-winx64\bin\mysqld.exe (mysqld 8.0.11) initializing of server in progress as process 9716
2018-06-15T08:35:22.138130Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Lf#HW/=jZ1g:
2018-06-15T08:35:30.402889Z 0 [System] [MY-013170] [Server] G:\Tools\mysql\mysql-8.0.11-winx64\mysql-8.0.11-winx64\bin\mysqld.exe (mysqld 8.0.11) initializing of server has completed
注意!執行輸出結果里面有一段: [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: rI5rvf5x5G,E 其中root@localhost:后面的“rI5rvf5x5G,E”就是初始密碼(不含首位空格)。在沒有更改密碼前,需要記住這個密碼,后續登錄需要用到。
要是你手賤,關快了,或者沒記住,那也沒事,刪掉初始化的 datadir 目錄,再執行一遍初始化命令,又會重新生成的。當然,也可以使用安全工具,強制改密碼,用什么方法,自己隨意。
在MySQL安裝目錄的 bin 目錄下執行命令:
mysqld --install [服務名]
后面的服務名可以不寫,默認的名字為 mysql。當然,如果你的電腦上需要安裝多個MySQL服務,就可以用不同的名字區分了,比如 mysql5 和 mysql8。
安裝完成之后,就可以通過命令net start mysql啟動MySQL的服務了。通過命令net stop mysql停止服務。通過命令sc delete MySQL/mysqld -remove卸載 MySQL 服務
在MySQL安裝目錄的 bin 目錄下執行命令:
mysql -u root -p
這時候會提示輸入密碼,記住了上面第3.1步安裝時的密碼,填入即可登錄成功,進入MySQL命令模式
在MySQL中執行命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';
修改密碼,注意命令尾的;一定要有,這是mysql的語法
到此,安裝部署就完成了。官方說測試速度MySQL8比5快兩倍
mysql> select user,host,authentication_string from mysql.user;
+------------------+-----------+-------------------------------------------+
| user | host | authentication_string |
+------------------+-----------+-------------------------------------------+
| mysql.infoschema | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| root | localhost | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+------------------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)
管理員root的host是localhost,代表僅限localhost登錄訪問。如果要允許開放其他ip登錄,則需要添加新的host。如果要允許所有ip訪問,可以直接修改成“%”
創建用戶:
CREATE USER 'lamw'@'%' IDENTIFIED WITH mysql_native_password BY 'xxh123!@#';
#(需要注意:mysql8.0加密方式修改了)
#檢查用戶
select user, host, plugin, authentication_string from user\G;
授權遠程數據庫
#授權所有權限
GRANT ALL PRIVILEGES ON *.* TO 'xxh'@'%';
#授權基本的查詢修改權限,按需求設置
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON *.* TO 'xxh'@'%';
查看用戶權限
show grants for 'xxh'@'%';
例如:新建用戶
CREATE USER 'lamw'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
登錄的時候 ip地址用localhost 可以用root登錄,填寫本機ip無法登錄,不知是啥問題導致
密碼123456
-
修改:HttpRunnerManager/HttpRunnerManager/settings.py里DATABASES字典和郵件發送賬號相關配置
-
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'HttpRunner', # 新建數據庫名 'USER': 'root', # 數據庫登錄名 'PASSWORD': 'lcc123456', # 數據庫登錄密碼 'HOST': '127.0.0.1', # 數據庫所在服務器ip地址 'PORT': '3306', # 監聽端口 默認3306即可 } } EMAIL_SEND_USERNAME = 'username@163.com' # 定時任務報告發送郵箱,支持163,qq,sina,企業qq郵箱等,注意需要開通smtp服務 EMAIL_SEND_PASSWORD = 'password' # 郵箱密碼
-
- 安裝rabbitmq消息中間件,啟動服務,訪問:http://host:15672/#/ host即為你部署rabbitmq的服務器ip地址 username:guest、Password:guest, 成功登陸即可
service rabbitmq-server start 小編這邊執行這句的時候報錯了,其實安裝好rabbitmq直接可以登錄了
安裝rabbitMQ之前,需要先安裝Erlang
http://www.erlang.org/downloads
1.安裝Erlang
所以在安裝rabbitMQ之前,需要先安裝Erlang 。
小編使用的是otp_win64_20.3 ,需要其他版本或者32位系統的,可以去官網下載。
全部點擊“下一步”就行
有的選擇其他的安裝方式,可能需要添加一下系統環境變量(正常安裝的也要檢查下):
(1):下載erlang,原因在於RabbitMQ服務端代碼是使用並發式語言erlang編寫的,下載地址:http://www.erlang.org/downloads,雙擊.exe文件進行安裝就好,安裝完成之后創建一個名為ERLANG_HOME的環境變量,其值指向erlang的安裝目錄,同時將%ERLANG_HOME%\bin加入到Path中,最后打開命令行,輸入erl,如果出現erlang的版本信息就表示erlang語言環境安裝成功;
2.安裝RabbitMQ
下載運行rabbitmq-server-3.7.6 ,需要其他版本或者32位系統的,可以去官網下載。
依舊可以不改變默認進行安裝。
需要注意:默認安裝的RabbitMQ 監聽端口是5672
3.配置
激活 RabbitMQ's Management Plugin
使用RabbitMQ 管理插件,可以更好的可視化方式查看Rabbit MQ 服務器實例的狀態。
打開命令窗口:
輸入命令:
"G:\Tools\rabbitMQ\RabbitMQ Server\rabbitmq_server-3.7.6\sbin\rabbitmq-plugins.bat" enable rabbitmq_management
執行這個命令的時候一直報錯,關閉cmder重新打開就可以了
賬號密碼均是guest
- 修改:HttpRunnerManager/HttpRunnerManager/settings.py里worker相關配置
djcelery.setup_loader()
CELERY_ENABLE_UTC = True
CELERY_TIMEZONE = 'Asia/Shanghai'
BROKER_URL = 'amqp://guest:guest@127.0.0.1:5672//' # 127.0.0.1即為rabbitmq-server所在服務器ip地址
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'
CELERY_TASK_RESULT_EXPIRES = 7200 # celery任務執行結果的超時時間,
CELERYD_CONCURRENCY = 10 # celery worker的並發數 也是命令行-c指定的數目 根據服務器配置實際更改 默認10
CELERYD_MAX_TASKS_PER_CHILD = 100 # 每個worker執行了多少任務就會死掉,我建議數量可以大一些,默認100 #小編並未對這段代碼做修改
- 在Python36\Scripts目錄下命令行窗口執行pip install -r requirements.txt 安裝工程所依賴的庫文件
(需要在G:\Tools\軟件安裝包\Httprunner\HttpRunnerManager-master\HttpRunnerManager-master目錄下 復制requirements.txt 到G:\Tools\Python\Python36\Scripts目錄下,PS:這里需要注意的是 小編一開始用3.7,各種報錯,所以建議是用3.6 )
- 命令行窗口切換到HttpRunnerManager目錄 生成數據庫遷移腳本,並生成表結構
python manage.py makemigrations ApiManager #生成數據遷移腳本
python manage.py migrate #應用到db生成數據表
如果遇到
報:Django migrate No changes detected
去數據庫查看沒有生成相應表格, 刪除migrations/ __pycache__的 __pycache__文件夾
然后執行
python manage.py migrate
- 創建超級用戶,用戶后台管理數據庫,並按提示輸入相應用戶名,密碼,郵箱。 如不需用,可跳過此步驟
python manage.py createsuperuser
- 啟動服務
python manage.py runserver 0.0.0.0:8000
- 啟動worker, 如果選擇同步執行並確保不會使用到定時任務,那么此步驟可忽略
python manage.py celery -A HttpRunnerManager worker --loglevel=info #啟動worker
python manage.py celery beat --loglevel=info #啟動定時任務監聽器
celery flower #啟動任務監控后台
-
訪問:http://localhost:5555/dashboard 即可查看任務列表和狀態
-
瀏覽器輸入:http://127.0.0.1:8000/api/register/ 注冊用戶,開始盡情享用平台吧
-
瀏覽器輸入http://127.0.0.1:8000/admin/ 輸入步驟6設置的用戶名、密碼,登錄后台運維管理系統,可后台管理數據