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對接,開發中。。。
本地開發環境部署
-
安裝mysql數據庫服務端(推薦5.7+),並設置為utf-8編碼,創建相應HttpRunner數據庫,設置好相應用戶名、密碼,啟動mysql
-
修改: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消息中間件,
-
path加入%RABBIT_HOME%\sbin RABBIT_HOME E:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.8地址
(1)運行命令行窗口cmd
-
(2)輸入命令rabbitmq-plugins enable rabbitmq_management
-
啟動服務,訪問:http://host:15672/#/ host即為你部署rabbitmq的服務器ip地址 username:guest、Password:guest, 成功登陸即可
service rabbitmq-server start
-
修改: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:15672//' # 127.0.0.1:15672即為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
DEBUG = True 改成False
在C:\Users\00\Desktop\HttpRunnerManager-master\templates的base.html修改
-
命令行窗口執行pip install -r requirements.txt 安裝工程所依賴的庫文件
-
命令行窗口切換到HttpRunnerManager目錄 生成數據庫遷移腳本,並生成表結構
-
pip install Celery
是在 Django 中, 連接數據庫時使用的是 MySQLdb 庫,這在與 python3 的合作中就會報以下錯誤django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'
解決方法:在 __init__.py 文件中添加以下代碼即可。import pymysql
pymysql.install_as_MySQLdb() -
cd C:\Users\00\Desktop\HttpRunnerManager-master python manage.py makemigrations ApiManager #生成數據遷移腳本 python manage.py migrate #應用到db生成數據表 -
創建超級用戶,用戶后台管理數據庫,並按提示輸入相應用戶名,密碼,郵箱。 如不需用,可跳過此步驟
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://127.0.0.1:5555/dashboard 即可查看任務列表和狀態
-
瀏覽器輸入:http://127.0.0.1:8000/api/register/ 注冊用戶,開始盡情享用平台吧
-
瀏覽器輸入http://127.0.0.1:8000/admin/ 輸入步驟6設置的用戶名、密碼,登錄后台運維管理系統,可后台管理數據
生產環境uwsgi+nginx部署參考:https://www.jianshu.com/p/d6f9138fab7b
新手入門手冊
1、首先需要注冊一個新用戶,注冊成功后會自動跳轉到登錄頁面,正常登錄即可訪問頁面 

2、登陸后默認跳轉到首頁,左側為菜單欄,上排有快捷操作按鈕,當前只簡單的做了項目,模塊,用例,配置的統計 
3、首先應該先添加一個項目,用例都是以項目為維度進行管理, 注意簡要描述和其他信息可以為空, 添加成功后會自動重定向到項目列表 
4、支持對項目進行二次編輯,也可以進行篩選等,項目列表頁面可以選擇單個項目運行,也可以批量運行,注意:刪除操作會強制刪除該項目下所有數據,請謹慎操作 
5、當前項目可以新增模塊了,之后用例或者配置都會歸屬模塊下,必須指定模塊所屬的項目,模塊列表與項目列表類似,故不贅述 
6、新增用例,遵循HtttpRuunner腳本規范,可以跨項目,跨模塊引用用例,支持拖拽排序,動態添加和刪減,極大地方便了場景組織, HttpRunner用例編寫很靈活,建議規范下編寫方式 



7、新增配置,可定義全局變量,全局hook,公共請求參數和公共headers,一般可用於測試環境,驗證環境切換配置,具體用法參考HttpRunner手冊 
8、支持添加項目級別定時任務,模塊集合的定時任務,遵循crontab表達式, 模塊列表為空默認為整個項目,定時任務支持選擇環境和配置 
9、定時任務列表可以對任務進行開啟或者關閉、刪除,不支持二次更改 
10、用例列表運行用例可以選擇單個,批量運行,鼠標懸浮到用例名稱后會自動展開依賴的用例,方便預覽,鼠標懸浮到對應左邊序列欄會自動收縮,只能同步運行 
11、項目和模塊列表可以選擇單個,或者批量運行,可以選擇運行環境,配置等,支持同步、異步選擇,異步支持自定義報告名稱,默認時間戳命名 
12、異步運行的用例還有定時任務生成的報告均會存儲在數據庫,可以在線點擊查看,當前不提供下載功能 
13、高大上的報告(基於extentreports實現), 可以一鍵翻轉主題哦 

其他
MockServer:https://github.com/yinquanwang/MockServer
因時間限制,平台可能還有很多潛在的bug,使用中如遇到問題,歡迎issue, 如果任何疑問好好的建議歡迎github提issue, 或者可以直接加群(628448476),反饋會比較快
