# UI_DDTFrameWork **Repository Path**: RampagingTestEngineers/UI_DDTFrameWork ## Basic Information - **Project Name**: UI_DDTFrameWork - **Description**: 基于selenium,web端UI自动化测试框架,数据驱动框架 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 5 - **Created**: 2021-09-18 - **Last Updated**: 2025-02-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UI_DDTFrameWork框架介绍 ## ## 简介 框架由Python3+selenium3+unittest组成,基于 POM 设计模式,数据驱动 ## 框架亮点 - 💗 自带本地谷歌浏览器驱动版本检测版本不匹配自动下载 - 💗 自带本地测试环境及依赖检测不匹配自动下载 - 💗 webdriver下方法分类并二次封装更方便调用 - 💗 智能等待页面元素加载告别 time.sleep 死等 - 💗 logging日志二次封装,全方位日志监控方便查找测试记录 - 💗 unittest框架断言二次封装失败会自动截图 - 💗 unittest框架中ddt数据驱动跳过测试用例方法封装 - 💗 分离域名可以切换执行地址,测试站或者正式站点 - 💗 执行完成自动发送邮件,附测试报告、测试内容等 ## 运行日志 ![日志截图](https://images.gitee.com/uploads/images/2021/0922/195426_9d22238c_7838265.png "QQ截图20210922195335.png") ## 运行截图 ![运行截图](https://images.gitee.com/uploads/images/2021/0922/200951_c6f68f00_7838265.gif "GIF.gif") ## 框架结构 common: 项目公共模块 |——seleniumLibrary: webdriver操作浏览器方法分类二次封装 |——_init_.py 其下PySelenium类继承所有操作类,方便调用 |——actions.py 鼠标相关操作方法,例如:长按、拖拽 |——alert.py 浏览器警告框相关处理方法,例如:接受、取消 |——base.py 所有操作方法类都继承该查找元素基础类 |——brower.py 设置浏览器相关配置,以及浏览器相关操作封装,例如:打开url、刷新页面等 |——element.py 页面元素操作方法,例如:点击、清除、输出、获取信息等 |——frame.py 页面frame框架处理,例如:切入、切出 |——javascript.py 执行js脚本,例如:页面滚动、修改元素属性等 |——keys.py 键盘操作 |——screenshot.py 截图 |——select.py 下拉框处理方法 |——wait.py 页面元素加载等待的几种方法 |——window.py 窗口切换 |——tools: 项目相关公共方法封装 |——assertion.py unittest框架中断言方法二次封装断言失败自动截图 |——checkDriverVersion.py 自动检测本地谷歌浏览器版本,下载对应版本的驱动 |——checkRequirements.py 检测本地项目依赖安装,不匹配的自动下载 |——createTestSuits.py 遍历测试用例目录,创建测试用例套件 |——decorator.py 装饰器,例如:收集错误日志、跳过测试用例 |——getTestData.py 获取测试数据,基于yaml类型文件,可以增加其他数据类型文件读取,例如:json、txt |——HTMLTestRunnerCN.py 测试报告生成文件 |——logConfig.py logging日志模块二次封装 |——operateConfigData.py ini类型文件读写 |——operateTxtData.py txt类型文件读写 |——sendEmail.py 发送邮件方法 |——timeTools.py 时间格式处理,例如:时间戳转对应时间格式、时间格式转时间戳等 config: 项目配置文件模块 |——driver: 谷歌浏览器驱动存放目录 |——driverPath.ini 谷歌浏览器驱动保存路径 |——filePathConfig.py 项目中相关文件夹的相对路径 |——urlConfig.py 项目中所有页面路由配置,页面对象中统一在这个文件中调用 data: 测试数据存放模块,yaml文件格式;如修改其他格式,需对应写数据的读取方法 page: 页面对象模块,所有页面的类文件,基于POM设计模式 |——_init_.py 其下BasePage类继承PySelenium所有操作类,页面对象类全部继承该基础类 result: 测试结果数据存放目录 |——errorPic: 错误截图存放目录 |——log: 执行日志存放目录 |——report: 测试报告存放目录 scripts: 测试用例存放目录,如增加子目录,需在createTestSuits.py->create_test_suits方法中增加子目录 browser.ini 浏览器相关配置,可以不用修改 config.ini 项目相关域名、报告内容、邮件配置信息等 requirements 项目依赖文件 run.py 项目执行主程序 ## 项目部署 - 1、拉取项目git clone https://gitee.com/RampagingTestEngineers/UI_DDTFrameWork.git - 2、安装python3配置环境变量官网下载:https://www.python.org/ - 3、安装pycharm官网下载:https://www.jetbrains.com/pycharm/ - 4、本地下载谷歌浏览器,暂不支持其他浏览器 - 5、解压后,pycharm中打开项目,设置对应的 interpreter - 6、直接运行run.py文件,执行baidu测试小demo ## 使用说明 - 1、上面测试demo跑通后方可编写测试用例 - 2、config.ini文件中配置测试域名 ![配置域名](https://images.gitee.com/uploads/images/2021/0922/220944_a6866bdc_7838265.png "屏幕截图.png") - 3、page目录中编写页面对象类 * 所有页面对象类都继承BasePage该基础类 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0922/221058_a43ce069_7838265.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0922/221131_7fe61c3c_7838265.png "屏幕截图.png") * 页面路由全部由config->urlConfig.py文件中调用 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0922/221226_e33e47c2_7838265.png "屏幕截图.png") - 4、测试数据编写规则 * 默认用yaml文件,也可以使用其他文件,如:json,txt,excel等,其他需在tools中编写对应获取测试数据方法 * 使用ddt数据驱动跳过执行测试用例装饰器,测试数据中必须写入isRun字段,也可以用unittest框架中的skipIf等方法 * 使用ddt测试用例数据获取后必须是数组类型,相同逻辑代码下传参字段要对应统一 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0924/222209_f5334719_7838265.png "屏幕截图.png") - 5、scripts目录中调用page页面类组合测试逻辑 * 实例化PySelenium传入页面对象和断言类中,该类都继承的是BasePage类 * 调用页面对象中的方法组合测试逻辑,传入测试数据,以字典格式传入测试数据 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0922/222156_57810f63_7838265.png "屏幕截图.png") ## 打赏~ 💗感觉还不错的话,顺便支付宝打个赏呗~ ![打赏码](https://images.gitee.com/uploads/images/2021/0918/222732_9f2c94f4_7838265.png "支付宝")