在Python Web自动化测试中,Selenium 3 + Pytest + Allure 是一个非常高效且流行的技术栈组合。以下是关于如何落地该技术栈的完整指南,涵盖环境搭建、代码实现、测试报告生成等关键步骤。
一、技术栈简介
-
Selenium 3
- 用于Web应用的自动化测试,支持多种浏览器(Chrome、Firefox、Edge等)。
- 提供WebDriver API,可模拟用户操作(点击、输入、截图等)。
-
Pytest
- Python的单元测试框架,支持参数化测试、测试用例分组、插件扩展等功能。
- 简洁易用,适合中大型项目的测试管理。
(Selenium3+Pytest+Allure 落地 Python Web 自动化测试)---"夏のke"---weiranit---.---fun/3299/
-
Allure
- 开源的测试报告工具,支持生成美观的HTML格式报告。
- 可与Pytest集成,展示测试用例的详细执行结果(如步骤、截图、日志等)。
二、环境搭建
-
安装依赖
使用
pip
安装所需库:markdownbash pip install selenium pytest pytest-allure-adaptor allure-pytest
-
下载WebDriver
- 根据浏览器版本下载对应的WebDriver(如ChromeDriver)。
- 将WebDriver路径添加到系统环境变量,或在代码中指定路径。
-
安装Allure命令行工具
- 下载Allure命令行工具:Allure官网
- 配置环境变量,确保
allure
命令可在终端中运行。
三、代码实现
以下是一个简单的示例,展示如何使用Selenium 3 + Pytest + Allure进行Web自动化测试。
1. 测试用例代码
python
python
import pytest
import allure
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
@allure.feature("登录功能") # 测试功能模块
@allure.story("用户登录成功") # 测试场景
@allure.severity(allure.severity_level.CRITICAL) # 测试用例级别
def test_login_success():
# 启动浏览器
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://example.com/login") # 替换为实际测试地址
try:
# 执行测试步骤
with allure.step("输入用户名"):
driver.find_element(By.ID, "username").send_keys("testuser")
with allure.step("输入密码"):
driver.find_element(By.ID, "password").send_keys("password123")
with allure.step("点击登录按钮"):
driver.find_element(By.ID, "login-btn").click()
time.sleep(2) # 等待页面加载
# 验证结果
assert "欢迎" in driver.page_source, "登录失败,未找到欢迎信息"
finally:
# 关闭浏览器
driver.quit()
2. 参数化测试
python
python
@pytest.mark.parametrize("username, password, expected", [
("testuser1", "password123", "欢迎"),
("testuser2", "wrongpassword", "登录失败"),
])
def test_login_with_params(username, password, expected):
driver = webdriver.Chrome()
driver.get("https://example.com/login")
driver.find_element(By.ID, "username").send_keys(username)
driver.find_element(By.ID, "password").send_keys(password)
driver.find_element(By.ID, "login-btn").click()
time.sleep(2)
assert expected in driver.page_source, f"测试失败,预期:{expected}"
driver.quit()
四、运行测试并生成Allure报告
-
运行测试
在终端中执行以下命令运行测试:
inibash pytest --alluredir=./allure-results
--alluredir
参数指定Allure结果文件的存储目录。
-
生成HTML报告
运行以下命令生成HTML格式的测试报告:
bashbash allure serve ./allure-results
allure serve
会自动启动本地Web服务器,并在浏览器中打开报告。
五、Allure报告功能
-
测试用例概览
- 展示测试用例的执行结果(通过、失败、跳过)。
- 支持按功能模块、严重级别、标签等维度筛选。
-
测试步骤详情
- 每个测试用例的详细执行步骤,包括截图、日志、异常信息。
-
历史趋势
- 对比多次测试的结果,分析测试通过率的变化。
六、优化与扩展
-
截图与日志
-
在测试失败时自动截图,并将截图嵌入Allure报告:
pythonpython if "欢迎" not in driver.page_source: driver.save_screenshot("failure_screenshot.png") with open("failure_log.txt", "w") as f: f.write(driver.page_source)
-
-
数据驱动测试
- 使用Excel、CSV或数据库存储测试数据,通过
pytest.mark.parametrize
实现数据驱动。
- 使用Excel、CSV或数据库存储测试数据,通过
-
持续集成
- 将测试集成到Jenkins、GitLab CI等CI/CD工具中,实现自动化测试与报告生成。
七、总结
通过Selenium 3 + Pytest + Allure的组合,可以高效地实现Python Web自动化测试,并生成直观的测试报告。该技术栈适用于中大型项目的测试管理,能够显著提升测试效率和质量。
关键点:
- 使用Allure的
@allure.feature
、@allure.story
等注解组织测试用例。 - 在测试失败时自动截图并记录日志,便于问题定位。
- 结合CI/CD工具,实现自动化测试的持续集成。