Web UI 自动化测试框架(Pytest+Selenium+Allure+Loguru)
文章目录
- 一、框架介绍
- 二、实现功能
- 三、目录结构
- 四、依赖库
- 五、安装教程
- 六、如何创建用例
- 1. 修改配置文件 `config.settings.py`
- 2. 删除框架中的示例用例数据
- 3. 编写测试用例
- 1. 在`page_objects`目录新建一个`py`文件,用于管理元素的定位以及页面操作方法
- 2. 在 `case_data`目录下新建一个`py`文件,用于管理测试用例中所需的测试数据
- 3. 在 `test_case`目录编写测试用例
- 七、运行自动化测试
- 方式一:使用pipenv管理虚拟环境
- 1. 激活已存在的虚拟环境
- 2. 运行
- 方式二:依赖包安装在本机
- 八 、初始化项目可能遇到的问题
- 联系我
一、框架介绍
本框架主要是基于 Python + pytest + selenium + Allure + loguru + 邮件通知/企业微信通知/钉钉通知 实现的WEB UI自动化框架。
二、实现功能
- 基于PageObject设计模式结合,该平台可实现测试用例的自动化执行及自动化测试报告的生成同时包括自动化测试执行时,用例失败的截图操作。
- 使用webdriver_manager自动下载webdriver,告别手动下载,再也不用担心webdriver版本问题了。
- 支持通过命令行指定一个运行浏览器,切换浏览器无忧。
- 支持通过命令行指定运行环境,实现环境一键切换,解决多环境相互影响问题
- 采用loguru管理日志,可以输出更为优雅,简洁的日志
- 钉钉、企业微信通知: 支持多种通知场景,执行成功之后,可选择发送钉钉、或者企业微信、邮箱通知
- 使用pipenv管理虚拟环境和依赖文件,可以使用
pipenv install
一键安装依赖包。 - 框架支持Allure测试报告,可以动态配置所需报告。
- 支持利用allure设置用例优先级,运行指定优先级的用例。
三、目录结构
├────case_data/ 测试数据目录
├────config/ 配置文件目录
│ ├────__init__.py
│ ├────allure_config/ allure相关配置文件
│ ├────global_vars.py 定义一个全局变量,用于存储运行过程中相关数据,不需要做任何更改
│ ├────models.py 定义的一些模型类
│ ├────path_config.py 项目相关路径
│ └────settings.py 项目配置文件
├────conftest.py pytest框架中一个特殊且重要的组件,它允许你定义和重用测试fixture
├────dockerfile 通过docker部署项目的文件
├────files/ 保存测试过程中需要的附件的目录
├────interface/ 接口池,保存测试过程中需要调用的接口。每一个接口使用yaml文件的方式进行管理
├────lib/
├────outputs/ 测试报告,日志,图片保存的目录
│ ├────image/
│ ├────log/
│ │ └────service.log
│ └────report/
│ │ ├────allure_html/ allure html测试报告的目录
│ │ ├────allure_results/ allure resultes测试结果目录
│ │ ├────autotest_report.zip allure html压缩的zip文件
│ │ └────test_result.txt 测试结果汇总。这个是在流水线里面发送测试结果有用到。一般情况下大家可以忽略。
├────page_objects/ 封装的页面元素定位和操作方法
├────Pipfile 使用pipenv管理依赖包的文件,如果不使用pipenv,可以忽略
├────pytest.ini pytest的配置文件
├────README.md
├────run.py 框架主入口文件
├────test_case/ 测试用例目录
│ ├────__init__.py
│ ├────conftest.py pytest框架中一个特殊且重要的组件,它允许你定义和重用测试fixture
└────utils/ 工具类
│ ├────__init__.py
│ ├────assertion_utils/ 断言
│ │ ├────__init__.py
│ │ ├────assert_control.py 断言的控制
│ │ └────assert_function.py 断言方法
│ ├────data_utils/ 数据处理
│ │ ├────__init__.py
│ │ ├────data_handle.py 数据处理的方法,将测试数据中的关键字:${login}替换为全局变量中的值
│ │ ├────eval_data_handle.py eval数据的方法
│ │ ├────extract_data_handle.py 通过正则表达式或者jsonpath从接口响应中提取数据
│ │ └────faker_handle.py 封装的faker包的一些方法
│ ├────database_utils/ 数据库处理
│ │ ├────__init__.py
│ │ └────mysql_handle.py 封装的pymysql的一些操作方法
│ ├────files_utils/ 文件处理
│ │ ├────__init__.py
│ │ ├────files_handle.py 封装文件操作相关的一些方法
│ │ └────yaml_handle.py 读写yaml文件
│