自动化测试HttpRunnerManager部署
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 = 'wuwei@boluome.com' # 定时任务报告发送邮箱,支持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:blm123@127.0.0.1:5672//'# if DEBUG else 'amqp://blm:blm123@127.0.0.1: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:blm123@127.0.0.1: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 start nginx
这时候默认会启动80端口
该80端口的默认项目,在配置文件/etc/nginx/nginx.conf 中,如果不需要可以注释掉,这里特别需要注意的是头部的user nginx需要更改为user root;不然后面访问uwsgi的时候报错,权限不足
cd /etc/nginx/conf.d/
进入conf.d文件夹创建配置文件httprunner.conf
vim httprunner.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:blm123@127.0.0.1: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
nohup celery flower --broker=amqp://guest:blm123@127.0.0.1:5672// & #启动任务监控后台
窗口任务:
python manage.py celery -A HttpRunnerManager worker --loglevel=info #启动worker
python manage.py celery beat --loglevel=info #启动定时任务监听器
celery flower --broker=amqp://guest:blm123@127.0.0.1:5672//
更多推荐
所有评论(0)