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工具,实现自动化测试的持续集成。
相关推荐
Apifox14 小时前
提交代码后如何自动触发 Apifox 的自动化测试?
前端·后端·测试
ly1562 天前
pytest-selenium的作用和常用操作-来自ai-个人留存
测试
VyrnSynx2 天前
CodeBuddy IDE震撼来袭:让开发更高效的全新工具,前沿内测大揭秘!
测试·笔记测评
莫魂魂3 天前
07.自动化测试常用函数
测试
胡斌附体4 天前
linux测试端口是否可被外部访问
linux·运维·服务器·python·测试·端口测试·临时服务器
智云软件测评服务4 天前
第三方软件测试检测机构能提供啥测试服务?功能测试了解下
测试·软件·
June bug5 天前
【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
经验分享·分布式·职场和发展·架构·学习方法·测试·软考
郝同学的测开笔记15 天前
从 "不支持的URL" 错误谈 IPv6 兼容性与 HTTPDNS 优化
测试
chao_78917 天前
作为测试人员,平时用什么大模型?怎么用?
面试·大模型·测试
chao_78919 天前
死锁相关知识
网络协议·游戏·测试·死锁