From 03a318ea10ac08834937cfb2d8a0490dd42beaa1 Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Thu, 26 Jun 2025 02:49:11 +0000 Subject: [PATCH] Update README.md --- README.md | 230 ++++++++++++++++++++++++------------------------------ 1 file changed, 101 insertions(+), 129 deletions(-) diff --git a/README.md b/README.md index f05cb6e..84ad717 100644 --- a/README.md +++ b/README.md @@ -1,129 +1,101 @@ -[![star](https://gitee.com/by_cwc/basic-auto-test/badge/star.svg?theme=dark)](https://gitee.com/by_cwc/basic-auto-test) -[![fork](https://gitee.com/by_cwc/basic-auto-test/badge/fork.svg?theme=dark)](https://gitee.com/by_cwc/basic-auto-test) - -# 接口/UI通用框架持续集成版本 - -- 在原有的基础上大量的优化了代码,新增了持续集成方面的内容,美化了测试报告, - 将参数化执行从 excel 迁移到维护更加方便的 yaml 文件中,新增了多种断言方式在 yaml - 中可以直接配置,代码更加简洁清晰。大量的工具类重构更加方便的可以让你的项目从开源版本二开从而使用到公司项目中。 -- 使用技术:Python+Selenium4+Requests+Allure2+Pytest+Jenkins+Pymysql+selenium4 Grid -- 我已经成功地在公司中落地了此框架,集成了大约 2w+的自动化 case,如果这个项目对你有帮助或启发,请多多点赞! -- 建议Python 版本 >= 3.9 -- **希望各位大佬多多 star** - - ![img.png](readme_img/111.png) - -### 项目目录简介 - -1. [config](config) --> 存放配置文件 - 1. [constants_path.py](config%2Fconstants_path.py) --> 项目对应文件夹路径 - 2. [config.yaml](config%2Fconfig.yaml) --> 配置文件 -2. [page_object](page_object) --> 页面对象管理 -3. [test_case](test_case) --> 测试用例 - 1. [conftest.py](test_case%2Fconftest.py) --> 测试用例公共夹具 - 2. [test_demo_testcase.py](test_case/test_demo_testcase.py) --> demo用例 -4. [test_data](test_data) --> 存放接口测试用例数据 -5. [util](util) --> 工具类 - 1. [auto_test](util%2Fauto_test) --> 自动化测试工具类 - 1. [api_test](util%2Fauto_test%2Fapi_test) --> 接口自动化工具类 - 1. [analysis_dubbo_testcase.py](util%2Fauto_test%2Fapi_test%2Fanalysis_dubbo_testcase.py) dubbo 用例解析工具类(开发中) - 2. [analysis_restful_testcase.py](util%2Fauto_test%2Fapi_test%2Fanalysis_restful_testcase.py) restful 用例解析工具类 - 3. [basic_request.py](util%2Fauto_test%2Fapi_test%2Fbasic_request.py) 接口测试请求基础类 - 4. [case_model.py](util%2Fauto_test%2Fapi_test%2Fcase_model.py) 用例模型 - 5. [custom_parameters.py](util%2Fauto_test%2Fapi_test%2Fcustom_parameters.py) 自定义参数配置,接口上下游,faker 数据 - 6. [response_assert.py](util%2Fauto_test%2Fapi_test%2Fresponse_assert.py) 接口响应断言 - 2. [ui_test](util%2Fauto_test%2Fui_test) --> UI自动化工具类 - 1. [basic_page.py](util%2Fauto_test%2Fui_test%2Fbasic_page.py) --> UI自动化基础类 - 3. [get_allure_data.py](util%2Fauto_test%2Fget_allure_data.py) --> 获取 allure 报告数据 - 2. [basic](util%2Fbasic) --> 基础工具类 - 1. [analysis_json.py](util%2Fbasic%2Fanalysis_json.py) --> json解析 - 2. [analysis_yaml.py](util%2Fbasic%2Fanalysis_yaml.py) --> yaml解析 - 3. [dingding_request.py](util%2Fbasic%2Fdingding_request.py) --> 钉钉机器人 - 4. [get_env.py](util%2Fbasic%2Fget_env.py) --> 获取环境变量 - 5. [http_request.py](util%2Fbasic%2Fhttp_request.py) --> http请求基础类 - 6. [log.py](util%2Fbasic%2Flog.py) --> 日志记录 - 7. [times.py](util%2Fbasic%2Ftimes.py) --> 时间相关 - 3. [db](util%2Fdb) --> 数据库操作 - 1. [connect_mysql.py](util%2Fdb%2Fconnect_mysql.py) --> mysql数据库连接 - 2. [connect_redis.py](util%2Fdb%2Fconnect_redis.py) --> redis数据库连接 - 4. [customize_exception.py](util%2Fcustomize_exception.py) --> 自定义异常 - 5. [temporary_data.py](util%2Ftemporary_data.py) --> 反射类临时数据 -6. [jenkins_report.py](jenkins_report.py) --> jenkins 报告生成发送 -7. [main.py](main.py) --> 项目入口 -8. [project_script.py](project_script.py) --> 项目脚本 -9. [requeirments.txt](requeirments.txt) --> 项目依赖包 -10. [docker-compose.yml](docker-compose.yml) --> docker-compose - -### 框架特色功能介绍 - -1. 支持 api用例 和 UI用例 的集成 -2. ui 用例执行步骤染色功能,明确展示出来被操作元素 - 1. ![img_4.png](readme_img/img_4.png) -3. 钉钉测试报告推送功能 - 1. ![img_5.png](readme_img/img_5.png) -4. 接口自动化测试的allure报告动态写入不用自己定义 allure 的装饰器 -5. 接口测试强化 - 1. 支持多种断言模式,jsonpath,sql 断言,响应字段存在,响应字段不存在,接口参数替换,在扫描用例是将用例中的一些关键字替换为指定方法执行的结果。 - 1. [demo_api.yaml](test_data%2Fdemo_service%2Fdemo_api.yaml)有详细的说明介绍 -6. 可以支持 jenkins 持续集成,看后面的参考文档或者提issue -7. 持续集成主入口[main.py](main.py),可以在 jenkins 上配置并发,环境,执行指定 mark,不用修改代码 -8. [config.yaml](config%2Fconfig.yaml)通过 global 配置,在本地运行时切换环境 - -### 安装方式(本地运行) - -1. 拉取项目安装requirements.txt中的包 -2. 修改[config.yaml](config%2Fconfig.yaml)中的配置 -3. 执行 demo 脚本保证正常运行,自此项目可以直接使用。 - -### jenkins集成与Selenium4 Grid集成 - -- 在本地运行成功之后,进一步的在公司内部集成,可以参考以下步骤: - -#### jenkins 集成步骤 - -1. 在 jenkins 上创建一个自动化测试的 job,具体的步骤可以参考百度教程。 -2. 新增文本参数 env (小写,可以设置默认值,pro/uat 来区分运行环境) - ![img.png](readme_img/img.png) -3. 新增文本参数 thread 并发执行线程数初次配置建议为 1 - ![img.png](readme_img/img-1.png) -4. 新增执行标记参数 可以不配置为空,配置后将运行指定标记的用例 - ![img_1.png](readme_img/img_1.png) -5. 配置执行 shell (这段内容直接拷贝) - ![img_2.png](readme_img/img_2.png) - -``` -#!/bin/bash -source /etc/profile -# 执行测试主要入口 -python3 main.py -# 初始化allure报告 -allure generate ${WORKSPACE}/Result/Report -o ${WORKSPACE}/allure-report --clean || true -# 生成测试报告并且推送钉钉报告 -python3 jenkins_report.py || true -``` - -#### selenium grid 集成步骤 - -- 什么是selenium grid -- selenium grid 是一个分布式测试框架,可以运行在多台机器上,每个机器可以运行多个浏览器实例, - 并且可以动态的增加和减少机器。在 linux 上配置selenium grid,可以有效的隔离用例执行。 - -1. 在服务器上执行项目中的[docker-compose.yml](docker-compose.yml) - 2. 执行命令 docker-compose up -d -2. 出现这个图片代表安装成功,访问地址为 服务器ip:5444/ui/index.html#/ - ![img_3.png](readme_img/img_7.png) -3. 代码中配置selenium grid地址 -4. 在 [conftest.py](test_case%2Fconftest.py) 修改配置 - - ``` - # 将 ip 修改为你自己的服务器 ip 后面的端口号和地址不用改动 - driver = webdriver.Remote(command_executor='http://127.0.0.1:5444/wd/hub', options=option) - ``` - -3. 自此当你在 jenkins 上运行测试时,用例会自动分发到你创建的 selenium grid 上。 - -#### 备注 - -1. 不用自己安装chromedriver 会自动读取浏览器版本进行安装(会有点慢,如果不行可以写死 dirver 地址或者或尝试几次) - -### 升级优化预告 -新增 playwright 支持,playwright 部署集成测试方案 \ No newline at end of file + + +接口/UI通用框架持续集成版本 + +--- + +## 项目目录简介 + +本项目是一个通用的接口和UI自动化测试框架,支持持续集成和Allure测试报告生成。该框架结合了Playwright和Selenium4,支持本地运行和Jenkins集成。 + +--- + +## 框架特色功能介绍 + +- **多平台支持**:支持接口测试(RESTful和Dubbo)和UI测试(Web)。 +- **结构清晰**:模块化设计,包含配置管理、页面对象模型、测试用例管理等。 +- **Allure报告集成**:自动生成美观的Allure测试报告。 +- **钉钉消息推送**:支持将测试结果推送到钉钉机器人。 +- **数据库操作支持**:支持MySQL和Redis数据库连接与操作。 +- **灵活的配置管理**:通过YAML文件进行测试数据和环境配置管理。 + +--- + +## 安装方式(本地运行) + +1. 安装依赖: + ```bash + pip install -r requirements.txt + ``` +2. 启动测试: + ```bash + pytest test_case/ + ``` +3. 生成Allure报告: + ```bash + allure serve ./allure-results + ``` + +--- + +## Jenkins集成与Selenium4 Grid集成 + +### Jenkins集成步骤 + +1. 在Jenkins中创建新任务。 +2. 配置代码仓库地址(Gitee)。 +3. 在构建步骤中执行: + ```bash + pip install -r requirements.txt + pytest test_case/ + ``` +4. 集成Allure报告插件,配置报告路径。 +5. 配置钉钉机器人推送: + ```bash + python jenkins_report.py + ``` + +### Selenium Grid集成步骤 + +1. 修改`config/config.yaml`中的Selenium Grid地址为你自己的服务器IP: + ```yaml + grid_url: http://:4444/wd/hub + ``` +2. 确保`docker-compose.yml`中的Grid服务配置正确。 +3. 启动Selenium Grid: + ```bash + docker-compose up -d + ``` + +--- + +## 执行测试主要入口 + +测试用例入口文件为`main.py`,通过`pytest`执行测试时会调用此文件中的测试逻辑。 + +--- + +## 初始化Allure报告 + +Allure报告初始化通过`util/auto_test/ui_test/basic_page.py`和`util/auto_test/get_allure_data.py`实现,自动收集和生成测试报告。 + +--- + +## 生成测试报告并且推送钉钉报告 + +测试完成后,使用`jenkins_report.py`脚本生成报告,并通过钉钉机器人推送消息通知。 + +--- + +## 备注 + +- 所有测试截图保存在`util/auto_test/ui_test/basic_page.py`中定义的图片路径。 +- 请确保`config/config.yaml`中的钉钉机器人名称与`util/basic/analysis_yaml.py`中配置的机器人信息一致。 + +--- + +## 升级优化预告 + +- 支持更多数据库类型(如MongoDB)。 +- 增加RESTful API测试断言模板。 +- 更完善的日志系统与异常处理机制。 \ No newline at end of file -- Gitee