4 Star 43 Fork 14

柯南 / hippo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

项目概述

hippo测试工具,基于 selenide、selenoid 实现自动化,操作简单易上手,已在公司稳定使用。

主要功能如下;

  • 【自动化测试】统计图表、元素管理、用例管理、变量管理、执行计划、测试报告

  • 【自动化管理】项目管理、告警管理、服务管理、脚本管理

  • 【测试工具】数据生成、用例生成

项目地址

环境部署

准备工作

JDK >= 1.8 (推荐1.8版本)
Mysql >= 5.7.0 (推荐8.0版本)
Maven >= 3.0
Node >= 14 (推荐14.x版本)

前端安装完node后,最好设置下淘宝的镜像源,不建议使用cnpm(可能会出现奇怪的问题)

运行系统

前往Gitee下载页面(gitee地址)下载解压到工作目录

建议使用Git克隆,因为克隆的方式可以和hippo随时保持更新同步。使用Git命令克隆。

git clone http://gitlab.icinfo.co/blank8/hippo.git

本地部署

后端运行

建议使用 IDEA,open back目录,使用 maven 进行安装依赖。

创建数据库hippo,运行数据库初始化文件init/ init.sql。

配置 application-local.yaml。

spring:
  config:
    activate:
      on-profile: local
  datasource:
    url: jdbc:mysql://ip:3306/hippo?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # ########## 连接池配置-开始 ##########
      initial-size: 5 #初始化大小
      min-idle: 5 #最小连接数
      max-active: 20 #最大连接数
      max-wait: 60000 #配置获取连接等待超时的时间
      query-timout: 30
      pool-prepared-statements: true #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。5.5及以上版本有PSCache,建议开启。
      max-pool-prepared-statement-per-connection-size: 20 #配置PSCache的大小
      validation-query: SELECT 1 FROM DUAL #用来检测连接是否有效的sql,要求是一个查询语句,常用SELECT 1 FROM DUAL
      validation-query-timeout: 3000 #检测连接是否有效的超时时间,单位是秒。底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法
      test-on-borrow: false #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
      test-on-return: false #是否在归还到池中前进行检验
      test-while-idle: true #是否在连接池空闲一段时间后检验连接有效性
      time-between-eviction-runs-millis: 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      min-evictable-idle-time-millis: 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
      max-evictable-idle-time-millis: 600000 #配置连接池中连接,在时间段内一直空闲,被逐出连接池的时间,单位毫秒。在minEvictableIdleTimeMillis基础上扩展,会在minEvictableIdleTimeMillis基础上判断连接是否空闲(默认逐出时间就是minEvictableIdleTimeMillis)
      # max-open-prepared-statements: #和上面的等价
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,slf4j
      filter:
        slf4j:
          enabled: true
        stat:
          enabled: true
      keepAlive: true       # 保持长连接
      maxPoolPreparedStatementPerConnectionSize: 20
      useGlobalDataSourceStat: true
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # ########## 连接池配置-结束 ##########
  servlet:
    multipart:
      max-file-size: 50MB
      max-request-size: 50MB
server:
  port: 8080
  tomcat:
    connection-timeout: 30000
logging:
  config: classpath:logback-local.xml

#minio配置
minio:
  accessKey: minioadmin
  secretKey: minioadmin
  bucket: hippo
  endpoint: http://ip:9000

#xxl-job配置
xxl:
  job:
    admin:
      addresses: http://ip:8082/xxl-job-admin  #xxljob调度中心部署  例如:http://127.0.0.1:8080/xxl-job-admin
    executor:
      appname: hippo #xxljob配置的执行器名称,
      address: http://ip:9999
      ip: ip #执行器IP,默为空表示自动获取IP
      port: 9999 #xxljob配置的端口号,默认为9999
      logpath: D:/hippo/xxl-job/logs  #执行器运行日志文件存储磁盘路径
      logretentiondays: -1  #调度中心日志表数据保存天数,过期日志自动清理;限制大于等于7时生效,否则, 如-1,关闭自动清理功能
    accessToken: default_token #调度中心通讯TOKEN [选填]:非空时启用

#360执行文件地址
installationPackage: C:\\Users\\hzhb\\AppData\\Roaming\\360se6\\Application\\360se.exe

selenoid: http://ip:8081

pythonEnv: E:\\miniconda\\envs\\py37\\python.exe

reportIp: http://ip:80

启动 MyApplication 文件,出现 Started MyApplication in 4.454 seconds (JVM running for 5.1)表示启动成功。

前端运行

1.安装前端依赖包,启动前端服务

# 进入项目目录
cd vue

# 安装依赖
npm install

# 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。
npm install --registry=https://registry.npmmirror.com

# 本地开发 启动项目
npm run dev

2.打开浏览器,输入:(地址) 默认账户/密码 admin/123456

若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功

传统部署

1.前端打包(npm run build),将打包的dist文件夹放入nginx目录,修改nginx.conf配置文件。

server {
        listen       80;
        server_name  localhost;

        location / {
            root   E:\\nginx-1.20.1\\dist; #dist包目录地址
            index  index.html index.htm;
            #try_files    $uri $uri/ /index.html;     #url不可达时,逐个向后转发

        }

        #这里解决跨域问题,后端地址及端口号
        location /api {
            rewrite "^/api/(.*)$" /$1 break;   #对指定的路径进行转发到后台
            proxy_pass http://localhost:8080;  #后端服务地址
            proxy_redirect    off;
            proxy_set_header  Host $host;
            proxy_set_header  X-real-ip $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

2.后端打包(mvn package)使用application-prod.yaml的配置文件,执行如下命令。

# 进入到jar目录
cd jar目录

# 启动后端服务
java -jar hippo-1.0.jar

3.启动NGINX(启动前端)

# 启动nginx
nginx.exe start
# 优雅地停止Nginx服务(即处理完所有请求后再停止服务)
nginx.exe -s quit

# 重启Nginx服务
nginx.exe -s reload

Docker部署

1.修改docker-compose.yaml配置文件

version: "3"
services:
  nginx: # 服务名称,用户自定义
    image: nginx:latest  # 镜像版本
    container_name: nginx
    ports:
      - "80:80"  # 暴露端口
    volumes: # 挂载
      - D:/hippo/frontend/dist:/usr/share/nginx/html
      - D:/hippo/frontend/nginx/nginx.conf:/etc/nginx/nginx.conf
      - D:/hippo/frontend/logs:/var/log/nginx
    privileged: true # 这个必须要,解决nginx的文件调用的权限问题
  mysql:
    image: mysql:8.0.23
    container_name: mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_HOST=localhost
      - MYSQL_PORT=3306
      - MYSQL_DATABASE=hippo
      - MYSQL_ROOT_PASSWORD=123456
    volumes:
      - D:/hippo/mysql/data:/var/lib/mysql
      - D:/hippo/mysql/init:/docker-entrypoint-initdb.d/
  #    - ./mysql/sql:/opt/sql
  selenoid:
    image: aerokube/selenoid:latest-release
    container_name: selenoid
    network_mode: bridge
    ports:
      - "4444:4444"
    volumes:
      - D:/hippo/selenoid/config:/etc/selenoid:ro
      - /var/run/docker.sock:/var/run/docker.sock
      - D:/hippo/selenoid/video:/opt/selenoid/video
      - D:/hippo/selenoid/logs:/opt/selenoid/logs
    environment:
      - OVERRIDE_VIDEO_OUTPUT_DIR=D:/hippo/selenoid/video
    command: -conf /etc/selenoid/browsers.json -video-output-dir /opt/selenoid/video -log-output-dir /opt/selenoid/logs -limit 10 -timeout 2m -capture-driver-logs true
  selenoid-ui:
    image: aerokube/selenoid-ui:latest-release
    container_name: selenoid-ui
    network_mode: bridge
    links:
      - selenoid
    ports:
      - "8081:8080"
    command: --selenoid-uri http://192.168.5.98:4444
  minio:
    image: minio/minio:latest
    container_name: minio
    restart: unless-stopped # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
    volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
      - D:/hippo/minio/data:/data
      - D:/hippo/minio/minio:/minio
      - D:/hippo/minio/config:/root/.minio
    environment: # 设置环境变量,相当于docker run命令中的-e
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
      MINIO_PROMETHEUS_AUTH_TYPE: public
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    command: server /data  --console-address ":9090"
    logging:
      driver: "json-file"
      options:
        max-size: "100m"
    ports: # 映射端口
      - "9000:9000" # 文件上传&预览端口
      - "9090:9090" # 控制台访问端口
  xxl-job-admin:
    image: xuxueli/xxl-job-admin:2.3.0
    container_name: xxl-job-admin
    ports:
      - "8082:8080"
    environment:
      PARAMS: '
        --spring.datasource.url=jdbc:mysql://mysql:3306/xxl_job?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
        --spring.datasource.username=root
        --spring.datasource.password=123456
        --xxl.job.accessToken=default_token'
    volumes:
      - D:/hippo/xxl-job/logs:/data/applogs
  hippo:
    image: hippo:latest
    container_name: hippo
    build: . # 表示以当前目录下的Dockerfile开始构建镜像
    volumes:
      - D:/hippo/backend:/home  #后端包地址
    ports:
      - "8080:8080"
      - "9999:9999"
    depends_on: # 依赖与mysql、nginx,其实可以不填,默认已经表示可以
      - nginx
      - mysql

2.启动服务

# 启动项目 自动完成 构建镜像、(重新)创建服务、按依赖顺序启动任何关联的服务。首次启动安装chrome时间较长 大概2分钟。
docker compose up -d
# 停止并删除docker-compose.yml中定义的所有服务容器和网络,但保留数据卷
docker compose down
MIT License Copyright (c) 2018 hippo Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

Hippo是一个轻量、简易、实用的测试工具。 有问题可联系我。 vx:zzh15158989710 展开 收起
JavaScript 等 6 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
JavaScript
1
https://gitee.com/zhuzhanhao1/hippo.git
git@gitee.com:zhuzhanhao1/hippo.git
zhuzhanhao1
hippo
hippo
master

搜索帮助