Selenium3+Pytest+Allure 落地 Python Web 自动化测试

在Python Web自动化测试中,Selenium 3 + Pytest + Allure 是一个非常高效且流行的技术栈组合。以下是关于如何落地该技术栈的完整指南,涵盖环境搭建、代码实现、测试报告生成等关键步骤。


一、技术栈简介

  1. Selenium 3

    • 用于Web应用的自动化测试,支持多种浏览器(Chrome、Firefox、Edge等)。
    • 提供WebDriver API,可模拟用户操作(点击、输入、截图等)。
  2. Pytest

    • Python的单元测试框架,支持参数化测试、测试用例分组、插件扩展等功能。
    • 简洁易用,适合中大型项目的测试管理。

(Selenium3+Pytest+Allure 落地 Python Web 自动化测试)---"夏のke"---weiranit---.---fun/3299/

  1. Allure

    • 开源的测试报告工具,支持生成美观的HTML格式报告。
    • 可与Pytest集成,展示测试用例的详细执行结果(如步骤、截图、日志等)。

二、环境搭建

  1. 安装依赖

    使用pip安装所需库:

    markdown 复制代码
    bash
    	pip install selenium pytest pytest-allure-adaptor allure-pytest
  2. 下载WebDriver

    • 根据浏览器版本下载对应的WebDriver(如ChromeDriver)。
    • 将WebDriver路径添加到系统环境变量,或在代码中指定路径。
  3. 安装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报告

  1. 运行测试

    在终端中执行以下命令运行测试:

    ini 复制代码
    bash
    	pytest --alluredir=./allure-results
    • --alluredir 参数指定Allure结果文件的存储目录。
  2. 生成HTML报告

    运行以下命令生成HTML格式的测试报告:

    bash 复制代码
    bash
    	allure serve ./allure-results
    • allure serve 会自动启动本地Web服务器,并在浏览器中打开报告。

五、Allure报告功能

  1. 测试用例概览

    • 展示测试用例的执行结果(通过、失败、跳过)。
    • 支持按功能模块、严重级别、标签等维度筛选。
  2. 测试步骤详情

    • 每个测试用例的详细执行步骤,包括截图、日志、异常信息。
  3. 历史趋势

    • 对比多次测试的结果,分析测试通过率的变化。

六、优化与扩展

  1. 截图与日志

    • 在测试失败时自动截图,并将截图嵌入Allure报告:

      python 复制代码
      python
      	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)
  2. 数据驱动测试

    • 使用Excel、CSV或数据库存储测试数据,通过pytest.mark.parametrize实现数据驱动。
  3. 持续集成

    • 将测试集成到Jenkins、GitLab CI等CI/CD工具中,实现自动化测试与报告生成。

七、总结

通过Selenium 3 + Pytest + Allure的组合,可以高效地实现Python Web自动化测试,并生成直观的测试报告。该技术栈适用于中大型项目的测试管理,能够显著提升测试效率和质量。

关键点

  • 使用Allure的@allure.feature@allure.story等注解组织测试用例。
  • 在测试失败时自动截图并记录日志,便于问题定位。
  • 结合CI/CD工具,实现自动化测试的持续集成。
相关推荐
Apifox11 小时前
【测试套件】当用户说“我只想跑 P0 用例”时,我们到底在说什么
单元测试·测试·ab测试
阁老3 天前
pytest测试框架:如何确保登录模块先执行并共享登录状态
测试
_志哥_3 天前
Superpowers 技术指南:让 AI 编程助手拥有超能力
人工智能·ai编程·测试
FliPPeDround6 天前
浏览器扩展 E2E 测试的救星:vitest-environment-web-ext 让你告别繁琐配置
e2e·浏览器·测试
Apifox6 天前
Apifox 2 月更新|MCP Client 调试体验优化、测试套件持续升级、支持公用测试数据、测试报告优化
前端·后端·测试
infiniteWei6 天前
Skills、MCP、Agent 的边界与商业化定位(附项目筛选表)
人工智能·aigc·测试
洞窝技术9 天前
让AI帮我做测试用例,我来喝咖啡
ai编程·测试
洛_尘15 天前
测试6:自动化测试--概念篇(JAVA)
java·开发语言·测试
洛_尘17 天前
测试5:测试分类
测试
橘颂TA25 天前
【测试】高效浏览器操作:基础功能与优化设置大全
c++·功能测试·职场和发展·测试·web测试