# Msptest **Repository Path**: DoraemonYzx/Msptest ## Basic Information - **Project Name**: Msptest - **Description**: 测试demo测试demo测试demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-04-12 - **Last Updated**: 2024-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Msptest ### 介绍 本框架主要是基于 Python + pytest + allure + log + yaml + excel + mysql + Jenkins + 钉钉通知 实现的Web端的UI自动化框架模板 - gitee地址(私人仓库,如需访问需找作者): https://gitee.com/DoraemonYzx/Msptest - 项目作者: 余振新 ![img.png](readme_img/img.png) ### 前言 框架主要使用 python 语言编写,结合 pytest 进行二次开发,用户可以在 yaml 文件中存放测试数据,在配置文件中存放页面元素库 使用简单的代码编写业务流程以及测试用例后,一键批量执行测试用例会自动生成 Allure 的报告,零基础代码小白,也可以操作 本框架支持 mysql 数据库操作、三种信息类别的日志文件、Chrome/Firfox浏览器、常用断言、钉钉通知/ 邮箱通知/ 灵活配置 ### 实现功能 - 测试数据与业务流程分离、 实现数据驱动 - 数据库操作: 直接在业务流程中写入sql即可,支持增删改查 - 动态多断言: 封装所有常见断言,返回True/False 支持多场景断言 - 日志模块: 打印每个操作步骤的日志信息,分为信息、警告、异常三个日志文件方便错误定位 - 钉钉/邮件通知: 支持多种通知场景,执行成功之后,可通过Jenkins将测试报告发送至钉钉或邮箱进行通知 - POM设计模式: 页面对象模式,让测试代码可读性更高、复用性更高、可维护性更高 ### 依赖库 1. allure 2. allure-pytest 3. allure-python-commons 4. selenium 5. time 6. logging 7. typing 8. colorlog 9. pymysql 10. xlrd 11. configparser 12. yaml 13. pytest 14. shutil 15. os 注意:pip install -r requirements.txt ### 框架结构 ``` │ pytest.ini // pytest 配置文件 │ README.md // 使用文档 │ run.py // 一键执行所有用例 │ ├─.pytest_cache // pytest执行缓存文件 │ ├─allure-2.21.0 // allure项目 │ ├─browserdriver // 浏览器驱动 │ │ │ ├─chrome_driver // 存放符合你电脑Chrome浏览器版本的驱动 │ │ chromedriver.exe │ │ │ └─firefox_driver // 存放符合你电脑FirFox浏览器版本的驱动 │ geckodriver.exe │ ├─business // 存放业务流程 │ │ element.ini // 存放元素库的配置文件 │ │ hr.py │ │ login.py │ ├─common // 公共模块 │ │ base_action.py // 常用操作封装,如元素定位、点击、断言等 │ │ base_driver.py // 获取WebDriver 浏览器对象 │ │ gol.py // 用于定义/读取 全局变量 │ │ log.py // 封装日志 │ │ mysl_control.py // 封装 MySql数据库操作 │ │ path.py // 用于获取绝对路径 │ │ read_excel.py // 读写Excel的操作 │ │ read_ini.py // 读取InI类型的配置文件 │ │ read_yaml.py // 读取Yaml类型的配置文件 │ ├─config // 框架配置 │ │ config.ini │ ├─logs // 日志目录 │ error-2023-04-07.log // 异常日志 │ info-2023-04-07.log // 信息日志 │ warning-2023-04-07.log // 警告日志 │ ├─page // 页面 元素库 │ │ 登录.py │ │ │ ├─msp │ │ │ menu.py │ │ └─人力资源管理系统 │ │ └─基础设定 │ │ │ 部门设定.py │ ├─test_case // 测试用例目录 │ │ conftest.py // 存放Fixture的配置文件 │ │ test_msp.py // test_开头的测试用例 │ ├─test_data // 测试数据 │ testdata.yml │ └─test_report // 测试报告 ``` ### 遇到问题 - 请仔细阅读文档,文档中可以帮你避免大部分的问题 - 当前并非最终版本,在测试过程中如果有优化建议,可以提出 注意: 1、目前该框架只是模板的测试阶段,可能会存在无法预料到的Bug 2、不同的Python版本以及第三方库版本可能会导致兼容问题(编写时使用的Python版本为:3.6.0) ### 安装教程 首先,运行本框架之前,需要搭建好 python、jdk、 allure环境 1. 搭建python教程:http://c.biancheng.net/view/4161.html 2. 搭建jdk环境:https://www.cnblogs.com/zll-wyf/p/15095664.html 3. 安装allure(需要2.0版本以上):https://blog.csdn.net/m0_49225959/article/details/117194318 最后,将本框架下载至本地任意目录中,并用cmd进入项目根目录 使用:pip install -r requirements.txt 安装所有第三方库 ### 使用说明 #### 一、选择对应的浏览器驱动 - Chrome驱动下载:http://chromedriver.storage.googleapis.com/index.html - FireFox驱动下载:https://registry.npmmirror.com/binary.html?path=geckodriver/ 将对应的驱动文件放入项目树中的browserdriver目录中 注意: 1、需要根据自己浏览器版本选择驱动 2、每个驱动目录中只能放入一个驱动文件,且不要对驱动文件进行重命名 ![img_4.png](readme_img/img_4.png) #### 二、修改公共配置文件config.ini 在框架配置文件修改待测的网址链接、使用的浏览器、是否开启无头模式、数据库配置 注:带有默认值的配置,如果值拼写错误,则会使用默认值的参数 ![img_3.png](readme_img/img_3.png) #### 三、创建页面元素库 在page目录下新建对应页面的元素库 注意: 1、元素库写法为固定写法无法修改,写法为:元素名称 = (”定位方式“, ”定位路径“),且css目前不可用 2、路径中的引号/双引号前需要加”\“进行转移 否则会报错 3、页面名称以及元素名可以输入中文 ![img_3.png](readme_img/img_5.png) #### 四、创建业务流程 在business目录下新建对应页面的业务流程 1. 导入元素库以及公共模块的包 2. 根据页面编写业务流程编写对应的操作函数,如登录页面login.py文件中编写login函数 注意: 1、在编写业务流程之前需要先理解BaseAction中BaseAction类下封装的方法,如click()、send_keys()需要的参数 2、业务流程大部分无法复用,所以编写函数需要一定的编码能力 3、可以用单元测试调用对应函数进行测试,写法如下图 if__name__ == "__main__":中 ![img_3.png](readme_img/img_6.png) #### 五、创建测试数据 在test_data目录下的testdata.yml文件中写入测试数据,也可以新建多个yaml文件写入测试数据 注意:需要学习yaml语法 ![img_3.png](readme_img/img_7.png) #### 六、创建测试用例 在test_case目录下新建test_开头的测试用例 1. 导入business写好的业务流程以及公共包 2. 创建test_开头的函数作为测试用例 3. 选择使用使用fixture 4. 调用并接收业务流程返回的值进行断言 注意: 1、fixture在conftest.py文件中进行维护 2、读取测试数据:data = read_yaml()方法,如果不填入参数,则取testdata.yml文件中的数据 3、测试数据不在testdata.yml文件时,将yaml文件路径传入data =read_yaml()中如“/test_data/testmsp.yml” 4、可以通过单元测试,测试具体某一用例是否正常,写法格式如:pytest.main(['test_login.py::test_01]) ![img_3.png](readme_img/img_8.png) #### 七、生成Allure报告 直接运行主程序的run.py文件,运行完成后就可生成漂亮的allure报告~ 注意: 1、test_report中的index.html需要在pycharm中才能打开 2、可以通过run.py文件选择执行结束后是否启动本地服务器打开allure报告 ![img_2.png](readme_img/img_2.png)