# Intelligent-manufacturing-Testin **Repository Path**: felix641/Intelligent-manufacturing-Testin ## Basic Information - **Project Name**: Intelligent-manufacturing-Testin - **Description**: Python-UI自动化测试框架 pytest+allure+po - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2024-12-11 - **Last Updated**: 2024-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Intelligent-manufacturing-Testin ## 项目介绍 该项目是一个web-ui自动化框架的测试项目, 使用了pytest+selenium-wire+allure+logging等框架技术。主要包括的功能有页面管理,日志管理, 配置文件管理, 测试用例管理,Allure自动化报告等。 ## 模块说明 | 功能模块 | 说明 | |-----------------|-------------------------------------------------------| | allure-results | 生成allure报告的目录 | | allure-report | 生成可视化html测试报告 | | base | 基础组件层 selenium框架原生的api的一个通用的封装 | | config | 基础配置层 包括项目路径的配置 业务数据的配置yaml文件 | | failed_case_img | 执行失败用例截图文件保存路径 | | log | 项目中的日志存储路径 | | page | 业务对象层 对于业务系统中的每一个模块页面的封装: 比如登录页面 | | testcase | 测试用例层 编写的测试用例, 本项目使用的是pytest测试用例 | | tool | 工具类封装, 存放一些封装的工具类,包含driver自动下载安装、日志、断言控制器、打包zip、发送邮件等 | | conftest.py | 固定配置文件,存放公共token、driver对象、配置信息以及需要执行的动作 | | pytest.ini | pytest的配置文件 | | run.py | pytest的启动执行文件 存放在项目的根目录 | | requirements.txt | 项目依赖包配置文件 | ## 安装教程 ### pycharm配置: 1. **配置系统环境变量**:在系统path中添加python&JDK安装路径(allure用)。 2. **配置项目运行环境**:File -> settings -> project:pytest-master -> python interpreter。 ### 项目配置: 1. **指定浏览器** - 在`config.yaml`文件中配置`browser`参数:【chrome、firefox、edge】 - 浏览器只能选择上述几种,否则默认启动chrome浏览器。 - `config.yaml`文件中配置webdriver安装路径。 2. **安装环境依赖包** - 在Terminal命令行中输入:`python -m pip install -r requirements.txt` 3. **allure报告配置** - 命令行下载allure-pytest插件:`pip install allure-pytest`(allure-pytest插件用于生成JSON文件格式的allure报告) - 手动下载allure安装包,并配置系统环境变量(allure用于将生成的JSON文件转换为html格式) - 在pycharm中打开测试报告`index.html`,右键open in browser **注意**: - 如果通过命令行运行,要生成最新的html报告需手动输入`allure generate allure-results -o allure-report --clean` - 如果使用pycharm `run.py`运行,无需手动输入allure命令,可自动生成html报告 4. **其他** - 拉取的项目放到盘符的根目录下 ### 项目启动 - 方式1: 终端输入`pytest`运行(如需指定运行参数,需在`pytest.ini`中配置`addopts`命令) - 方式2: 右键直接运行`run.py` ### 用例编写说明 #### 用例模块介绍: ##### 【Page】模块 1. 用于将页面上的元素封装在Page中,方便调用 2. 每个系统页面对应一个Page文件 ##### 【TestCase】模块 1. 存放相关页面的测试用例。 2. 测试文件中可以定义多个测试方法(每个测试方法即为一条测试用例) ##### 测试用例【命名规则】: 1. `@allure.feature`:为【模块-页面】名称 2. `@allure.title`:为测试用例名称 3. `@allure.step`:为测试用例步骤 ##### 测试用例执行顺序: 1. 默认情况下,Pytest会根据文件名和函数名字典序的排序执行 2. 使用 pytest-ordering 或 pytest-order 等插件可显式指定测试用例的执行顺序。 3. 可以在测试函数上使用 @pytest.mark.run(order=n) 来手动指定执行顺序。优先级高于文件和函数名的顺序。 ## 技术要点 1. selenium web自动化 2. pytest 测试框架 3. logging 日志管理框架 4. PyYAML yaml 配置文件的使用和解析 5. assert_compare 断言控制器 6. img模块 记录测试用例失败的截图 7. 装饰器设计模式的使用 8. allure 测试报告 9. parameter 参数化测试用例数据管理 10. pytest_runtest_makereport 用例执行失败后自动截图 11. 支持失败重跑 12. 兼容chrome、firefox、edge浏览器 13. 自动下载并配置浏览器驱动,无需手动安装浏览器驱动 14. 新增seleniumwire插件,支持前台验证码读取 ## 常见问题 1. **allure 报告生成失败** - 在命令提示符中尝试运行 `allure --version`。 - 如果 Allure 已经正确安装并且 bin 目录被添加到了 PATH 中,可看到 Allure 的版本号。 - 如果命令提示符返回错误消息,需要重新安装 Allure 或者手动添加 Allure 的 bin 目录到 PATH 中。 2. **乱码问题** - pycharm:菜单栏选择 File -> Settings -> Editor -> File Encodings,确保项目编码设置为 UTF-8。 - 同时,在 Console Encoding 设置选择 UTF-8。 3. **selenium-wire 运行提示:ModuleNotFoundError: No module named 'blinker._saferef'** - 解决方法:`pip install blinker==1.7.0` 4. 单元测试代码尽量不用try except,尽量让异常自然抛出,以便Pytest能够正确地捕捉它们。 - 如果使用try except,对于无法捕捉的异常,才会导致测试用例执行失败。导致运行有异常时,allure仍然会认为用例执行成功。 - 如果确实需要使用try/except块,应该确保在捕获异常后显式地使用pytest.fail,或使用assert断言 来标记测试用例为失败。 5. ModuleNotFoundError: No module named 'seleniumwire' - 解决方法:`pip install selenium-wire`