UI自动化测试,结合代码详述如何搭建pytest框架,并给出完整的项目文件
时间: 2025-07-15 09:36:55 浏览: 5
<think>好的,我现在需要帮助用户了解如何搭建pytest框架进行UI自动化测试,并且他们希望获得完整的项目文件及代码示例。首先,我需要回顾用户提供的引用内容,看看是否有相关的信息可以直接应用。引用[1]提到pytest适用于UI自动化测试,安装方法;引用[2]和[3]则涉及框架实战和具体配置。
接下来,我需要构建一个完整的项目结构。常见的UI自动化测试框架通常包括配置文件、页面对象、测试用例、工具类等模块。根据引用[3],修改配置文件config.settings.py是关键步骤之一,所以项目结构中应该包含config目录和settings.py文件。此外,引用[2]提到页面对象和测试用例的编写,因此需要pages和test_cases目录。
然后,代码示例部分需要涵盖配置、页面对象、测试用例和pytest的运行。比如,在配置文件中设置浏览器类型和基础URL,使用Playwright进行浏览器控制,创建页面类封装元素定位和操作,编写测试用例并使用pytest的标记功能,最后通过命令行或pytest.ini文件来运行测试。
用户可能还需要知道依赖安装,比如pytest-playwright和所需的包,所以需要列出安装命令。此外,项目结构需要清晰,方便用户理解各个部分的作用。可能需要解释每个文件和目录的用途,比如conftest.py用于共享fixture,utils放置工具函数等。
最后,要确保回答符合系统级指令:使用正确的中文,数学公式格式正确,生成相关问题。在引用部分,用户提供的引用[1]、[2]、[3]需要自然地融入回答中,比如在提到安装pytest时引用[^1],在页面对象和测试用例时引用[^2],在配置文件时引用[^3]。
检查是否有遗漏,比如是否提供了完整的项目结构,代码示例是否涵盖关键部分,是否生成了相关问题。确保所有行内代码和独立公式都使用正确的LaTeX格式,但在这个回答中可能数学公式较少,主要集中在代码结构上。因此,重点放在代码块和项目结构上,符合用户需求。</think>以下是如何使用pytest搭建UI自动化测试框架的完整指南,包含项目结构、代码示例和关键配置说明:
### 一、项目结构
```
project/
├── config/
│ └── settings.py # 配置文件
├── pages/
│ ├── login_page.py # 页面对象模型
│ └── home_page.py
├── test_cases/
│ └── test_login.py # 测试用例
├── conftest.py # pytest共享fixture
├── utils/
│ ├── logger.py # 日志工具
│ └── webdriver.py # 浏览器驱动管理
├── requirements.txt # 依赖库
└── pytest.ini # pytest配置文件
```
### 二、核心代码示例
1. **配置文件 config/settings.py**
```python
BROWSER_TYPE = "chrome"
BASE_URL = "https://example.com"
TIMEOUT = 15
HEADLESS = False
```
2. **浏览器驱动 utils/webdriver.py**
```python
from playwright.sync_api import sync_playwright
from config.settings import BROWSER_TYPE, HEADLESS
def browser_launch():
with sync_playwright() as p:
browser = p[BROWSER_TYPE].launch(headless=HEADLESS)
context = browser.new_context()
page = context.new_page()
yield page
browser.close()
```
3. **页面对象 pages/login_page.py**
```python
class LoginPage:
def __init__(self, page):
self.page = page
self.username = page.locator("#username")
self.password = page.locator("#password")
def login(self, user, pwd):
self.username.fill(user)
self.password.fill(pwd)
self.page.click("#login-btn")
```
4. **测试用例 test_cases/test_login.py**
```python
import pytest
from pages.login_page import LoginPage
@pytest.mark.usefixtures("browser")
class TestLogin:
def test_valid_login(self, browser):
login_page = LoginPage(browser)
login_page.login("admin", "admin123")
assert browser.title() == "Dashboard"
@pytest.mark.parametrize("user,pwd", [("wrong", "wrong")])
def test_invalid_login(self, browser, user, pwd):
login_page = LoginPage(browser)
login_page.login(user, pwd)
assert "登录失败" in browser.content()
```
5. **共享fixture conftest.py**
```python
import pytest
from utils.webdriver import browser_launch
@pytest.fixture(scope="function")
def browser():
yield from browser_launch()
```
### 三、环境搭建步骤
1. 安装依赖库:
```bash
pip install pytest playwright
playwright install chromium
```
2. 配置pytest.ini:
```ini
[pytest]
addopts = -v --html=report.html
testpaths = test_cases
markers =
smoke: 冒烟测试
regression: 回归测试
```
### 四、执行测试
```bash
pytest test_cases/ --browser chromium --headed
```
: pytest支持通过插件体系扩展功能,如生成HTML报告需安装pytest-html
: 页面对象模式是UI自动化测试的最佳实践,可提高代码复用率
: 配置与实现分离是框架设计的核心原则,便于维护和扩展
阅读全文
相关推荐

















