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工具,实现自动化测试的持续集成。
相关推荐
用户7858298243069 小时前
Selenium3.0 平台级自动化测试框架综合实战(完结)
测试
felix199113 小时前
pytest-dsl: 用自然语言编写自动化测试,让测试代码不再难懂
测试
越学不动啦3 天前
十、自动化函数+实战
运维·软件测试·自动化·测试
Hy小杨3 天前
压测JMeter经验分享文档-Concurrency Thread Group
测试
waves浪游4 天前
自动化测试常用函数
测试用例·bug·测试
邹老师的小课堂4 天前
Windows环境下,Jenkins+Gitee的CICD
windows·gitee·jenkins·测试·cicd
Z_z在努力4 天前
【软件测试】bug 篇
bug·测试
越学不动啦4 天前
八、自动化函数
运维·软件测试·自动化·dubbo·测试
大话性能5 天前
等价类划分与组合测试:提升测试效率与覆盖率的关键
测试