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工具,实现自动化测试的持续集成。
相关推荐
song_ly0012 天前
深入理解软件测试覆盖率:从概念到实践
笔记·学习·测试
试着6 天前
【AI面试准备】掌握常规的性能、自动化等测试技术,并在工作中熟练应用
面试·职场和发展·自动化·测试
waves浪游7 天前
论坛系统测试报告
测试工具·测试用例·bug·测试
灰色人生qwer7 天前
使用JMeter 编写的测试计划的多个线程组如何生成独立的线程组报告
jmeter·测试
.格子衫.7 天前
powershell批处理——io校验
测试·powershell
试着8 天前
【AI面试准备】TensorFlow与PyTorch构建缺陷预测模型
人工智能·pytorch·面试·tensorflow·测试
waves浪游8 天前
博客系统测试报告
测试工具·测试用例·bug·测试
智云软件测评服务10 天前
数字化时代下,软件测试中的渗透测试是如何保障安全的?
渗透·测试·漏洞
试着11 天前
【AI面试准备】XMind拆解业务场景识别AI赋能点
人工智能·面试·测试·xmind
waves浪游12 天前
性能测试工具篇
测试工具·测试用例·bug·测试