基於HttpRunner的接口自動化測試平台HttpRunnerManager(二)


https://github.com/HttpRunner/HttpRunnerManager

HttpRunnerManager

Design Philosophy

基於HttpRunner的接口自動化測試平台: HttpRunnerdjcelery 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字典和郵件發送賬號相關配置

    1.      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 #啟動任務監控后台

 

 

 

未完待續


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM