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
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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。