一、引言
在本篇文章中,我们将介绍如何使用 pytest
、Selenium
、Allure
、Page Object (PO)
设计模式、Log
、YAML
配置文件和 Git
来搭建一个自动化测试框架。我们将分步骤进行详细讲解,并给出一个简单的测试用例解释。
二、自动化框架搭建的步骤
1、框架结构设计
首先设计框架的基本目录结构。以下是一个基本的自动化测试框架目录结构:
automation-framework/
│
├── config/
│ └── config.yaml # 配置文件
│
├── pages/
│ ├── base_page.py # 基类,封装常用操作
│ └── login_page.py # 登录页面,继承基类
│
├── tests/
│ ├── test_login.py # 登录功能测试用例
│ └── test_checkout.py # 结账功能测试用例
│
├── reports/ # Allure报告
│ └── allure-results/ # Allure结果文件
│
├── utils/
│ ├── driver_factory.py # WebDriver工厂类
│ └── log.py # 日志封装类
│ └── screenshot.py # 截图封装类
│
├── requirements.txt # 依赖包
├── pytest.ini # pytest 配置文件
└── conftest.py # pytest 配置文件
2. 依赖安装
在开始之前,需要安装以下依赖:
pip install selenium pytest allure-pytest pytest-xdist yaml
- Selenium:Web 自动化操作
- pytest:Python 测试框架
- Allure:生成测试报告
- pytest-xdist:并行执行测试用例
- PyYAML:解析 YAML 配置文件
- pytest-html:生成 HTML 报告(可选)
- 在
requirements.txt
中添加所有的依赖:selenium==4.0.0 pytest==7.0.1 allure-pytest==2.10.0 pytest-xdist==2.5.0 pyyaml==6.0 pytest-html==3.1.1
3. Page Object (PO) 设计模式封装
PO 模式将页面元素和页面操作封装成类,从而使得测试代码更加清晰、可维护。
3.1 基类 base_page.py
base_page.py
是页面对象的基类,封装了基本的操作,例如点击按钮、输入框操作等。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class BasePage:
def __init