自动化测试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 = '[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 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:[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

nohup celery 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//

猜你喜欢

转载自blog.csdn.net/wu2700222/article/details/81459649