【软件测试】自动化测试框架Pytest + Selenium的使用

Pytest + Selenium 是一种常见的自动化测试框架组合,用于编写和执行 Web 应用程序的自动化测试。Pytest 是一个强大的 Python 测试框架,而 Selenium 是一个用于浏览器自动化的工具,二者结合使用可以高效地进行 Web 应用的功能测试、UI 测试等。

1. 安装 Pytest 和 Selenium

首先,需要安装所需的库。在命令行中使用 pip 安装 Pytest 和 Selenium:

pip install pytest selenium

另外,还需要安装一个浏览器驱动(如 ChromeDriver、GeckoDriver 等)来启动浏览器。以 Chrome 浏览器为例,可以在以下网址下载对应版本的 ChromeDriver。

2. 配置 WebDriver

Selenium 通过 WebDriver 来控制浏览器,常见的浏览器有 Chrome、Firefox、Edge 等。以下是如何配置 Selenium 使用 Chrome 浏览器的例子:

from selenium import webdriver# 设置 ChromeDriver 路径
driver = webdriver.Chrome(executable_path='path_to_chromedriver')# 打开网页
driver.get("https://www.example.com")# 关闭浏览器
driver.quit()

3. 编写简单的测试用例

在 Pytest 中,我们可以编写以 test_ 开头的函数作为测试用例。以下是一个简单的 Pytest + Selenium 测试用例示范:

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By# 设置 WebDriver
@pytest.fixture(scope="function")
def driver():driver = webdriver.Chrome(executable_path='path_to_chromedriver')yield driverdriver.quit()# 测试用例:访问网页并检查标题
def test_title(driver):driver.get("https://www.example.com")assert "Example Domain" in driver.title# 测试用例:点击链接并检查跳转
def test_click_link(driver):driver.get("https://www.example.com")link = driver.find_element(By.LINK_TEXT, "More information...")link.click()assert "IANA" in driver.title

4. Pytest 配置

在上面的示例中,@pytest.fixture 用于创建一个 WebDriver 实例并在测试执行前进行设置,测试执行完后关闭浏览器。scope="function" 表示每个测试用例都会创建一个新的 WebDriver 实例。如果希望跨多个测试共享 WebDriver,可以将 scope 设置为 "module""session"

5. 使用 Selenium 控制浏览器

Selenium 提供了丰富的 API 来与网页交互。以下是一些常见的操作:

  • 查找元素:
# 使用 ID 查找元素
element = driver.find_element(By.ID, "element_id")# 使用类名查找元素
element = driver.find_element(By.CLASS_NAME, "class_name")# 使用 XPath 查找元素
element = driver.find_element(By.XPATH, "//div[@class='example']")
  • 发送键盘输入:
# 向输入框发送文本
input_element = driver.find_element(By.NAME, "q")
input_element.send_keys("Selenium")
  • 点击按钮或链接:
button = driver.find_element(By.ID, "submit_button")
button.click()
  • 获取元素文本:
text = driver.find_element(By.TAG_NAME, "h1").text
  • 等待元素加载:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 等待某个元素可点击
element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "submit_button"))
)

6. 运行测试

你可以在命令行运行 Pytest 来执行测试:

pytest test_example.py

Pytest 会自动发现以 test_ 开头的函数并执行测试。

7. 常见的 Pytest 功能

  • 断言(Assertions):Pytest 使用 Python 内建的 assert 语句进行测试断言,检查预期结果是否符合实际。
  • 测试报告:Pytest 会输出测试结果。如果想要生成 HTML 或 JUnit 风格的报告,可以使用 pytest-html 插件:
pip install pytest-html
pytest --html=report.html
  • 并行执行:可以使用 pytest-xdist 插件实现测试的并行执行,提高执行速度。
pip install pytest-xdist
pytest -n 4  # 使用 4 个进程并行执行测试

总结

通过 Pytest 和 Selenium 的结合,可以非常方便地编写、组织和执行 Web 自动化测试。Pytest 提供了强大的测试功能和灵活的配置,而 Selenium 则提供了与浏览器交互的能力,二者结合能帮助测试人员快速有效地进行自动化测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

煤矿湿喷砂浆搅拌机组创新设计与关键技术研究

引言&#xff1a;湿喷工艺在煤矿支护中的革命性意义 在深部煤矿巷道支护领域&#xff0c;湿喷混凝土技术以其回弹率低&#xff08;<15%&#xff09;、粉尘浓度小&#xff08;<10mg/m&#xff09;的显著优势&#xff0c;逐步取代传统干喷工艺。作为湿喷工艺的核心设备&am…

如何处理ONLYOFFICE文档服务器与Java Web应用间的安全认证和授权

如何处理ONLYOFFICE文档服务器与Java Web应用间的安全认证和授权&#xff1f; 处理 ONLYOFFICE 文档服务器与 Java Web 应用之间的安全认证和授权&#xff0c;通常涉及以下几个关键步骤和技术&#xff1a; 1. JWT (JSON Web Token) 认证 启用 JWT&#xff1a; ONLYOFFICE 文档…

无参数RCE

无参数RCE&#xff08;Remote Code Execution&#xff0c;远程代码执行&#xff09; 是一种通过利用目标系统中的漏洞&#xff0c;在不直接传递用户可控参数的情况下&#xff0c;实现远程执行任意代码的攻击技术。与传统的RCE攻击不同&#xff0c;无参数RCE不依赖外部输入参数…

OL9设置oracle23ai数据库开机自启动

1、设置oracle用户的环境变量信息 [oracleOracleLinuxR9U5 ~]$vim ~/.bash_profile # Set Oracle environment variables for Oracle 23c AI export ORACLE_HOME/opt/oracle/product/23ai/dbhomeFree export ORACLE_SIDFREE export PATH$ORACLE_HOME/bin:$PATH export LD_LIB…

AI agents系列之智能体框架介绍

1. 引言 智能体AI Agents框架通过赋予自主系统动态感知、推理和行动的能力&#xff0c;彻底改变了AI领域。本节将探讨智能体框架的核心概念&#xff0c;并重点介绍为什么开源解决方案对现代AI开发的创新和可扩展性至关重要。 1.1 什么是智能体框架&#xff1f; 智能体框架代…

【数据资产入表】数据确权

&#xfeff;#数据要素[话题]#&#xfeff; &#xfeff;#数据资源盘点[话题]#&#xfeff; &#xfeff;#数据资产盘点[话题]#&#xfeff; &#xfeff;#数据资产[话题]#&#xfeff; &#xfeff;#数据资产入表[话题]#&#xfeff; &#xfeff;#数据盘点[话题]#&…

关于vxe-select得filter-method 自定义方法得使用,忽略大小写匹配

vxe-select使用模糊匹配时&#xff0c;filter-method自定义匹配方法&#xff0c;模糊忽略大小写进行匹配数据 <vxe-select v-model"marketingId":options"marketingOptions"transfer clearable placeholder"市场"filterable :filter-method&…

AIDL 中如何传递 Parcelable 对象

目录 1. 直接在 AIDL 中定义 Parcelable 对象2. 自定义 Parcelable 对象的传递3. 以 Rect 类为例的 Parcelable 实现4. 注意安全性5. 小结1. 直接在 AIDL 中定义 Parcelable 对象 背景说明 从 Android 10(API 级别 29)开始,AIDL 允许直接在 .aidl 文件中定义 Parcelable 对…

【LangChain核心组件】Retrieval(检索)模块

在AI技术日新月异的今天&#xff0c;大型语言模型&#xff08;LLM&#xff09;的局限性也逐渐显现——它们无法有效处理特定领域知识和用户私有数据。这正是检索增强生成&#xff08;Retrieval-Augmented Generation&#xff0c;RAG&#xff09;技术崛起的根本原因。作为当前最…

Java使用WebSocket视频拆帧进度处理与拆帧图片推送,结合Apipost进行调试

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>Configuration public class WebSocketConfig {/*** 启动 WebSocket 服务器*/Beanpublic ServerEndpointE…

XSS攻击(反射型、存储型、dom型、PDF、SWF、SVG)

一、XSS攻击是什么 XSS是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码&#xff0c;当用户浏览该页之时&#xff0c;嵌入其中 Web 里面的脚本代码会被执行&#xff0c;从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。 二、XSS分类 反射型XSS 常见情况是…

vue + element-plus自定义表单验证(修改密码业务)

写一个vue组件Password.vue 没有表单验证只有3个表单项 <template><div><el-form><el-form-item label"旧密码"><el-input></el-input></el-form-item><el-form-item label"新密码"><el-input>&l…

Linux下使用MTK的SP_Flash_tool刷机工具

MTK的SP_Flash_tool刷机工具安装流程如下&#xff1a; 1、解压SP_Flash_Tool_Linux_v5.1336.00.100_Customer.zip unzip SP_Flash_Tool_exe_Linux_64Bit_v5.1520.00.100.zip 2、首先安装 libusb-dev 这个包&#xff1a; sudo apt-get install libusb-dev 3、安装成功之后…

基于 PyGetWindow 获取窗口信息和控制窗口

PyGetWindow 是基于Python的一款简单、跨平台的模块&#xff0c;用来获取窗口信息和控制窗口。可以实现的功能有&#xff1a; 获取当前系统中所有打开窗口的列表。 根据窗口标题、窗口句柄等属性获取特定的窗口对象。 激活、最小化、最大化和关闭窗口。 获取和设置窗口的位置、…

STM32硬件IIC+DMA驱动OLED显示——释放CPU资源,提升实时性

目录 前言 一、软件IIC与硬件IIC 1、软件IIC 2、硬件IIC 二、STM32CubeMX配置KEIL配置 三、OLED驱动示例 1、0.96寸OLED 2、OLED驱动程序 3、运用示例 4、效果展示 总结 前言 0.96寸OLED屏是一个很常见的显示模块&#xff0c;其驱动方式在用采IIC通讯时&#xff0c;常用软件IIC…

【ozone工具使用指南】基于keil使用ozone创建一个调试工程

前言&#xff1a;一般调试嵌入式工程代码最常见的方式是基于keil上面DEBUG&#xff0c;使用这种最古老的方式虽然也很方便&#xff0c;但是一些功能并没有办法体现&#xff0c;比如变量的变化曲线或者波形并无法直观的显示出来&#xff0c;ozone这个工具就结合了上面提到的比ke…

【ROS2】行为树 BehaviorTree(五):详细学习端口和黑板

1、构造函数 之前使用的行为树创建节点时,默认的构造函数形如: CalculateGoal(const std::string& name, const NodeConfig& config):SyncActionNode(name,config) {

架构思维:缓存层场景实战_读缓存(下)

文章目录 Pre业务场景缓存存储数据的时机与常见问题解决方案1. 缓存读取与存储逻辑2. 高并发下的缓存问题及解决方案3. 缓存预热&#xff08;减少冷启动问题&#xff09; 缓存更新策略&#xff08;双写问题&#xff09;1. 先更新缓存&#xff0c;再更新数据库&#xff08;不推荐…

Odrive源码分析(七) 逆park变换

Odrive源码分析(七) Park逆变换 Odrive中FOC部分代码分散在各个对象中&#xff0c;并不是集中在某一块&#xff0c;所以试图在某一段代码就能得到FOC全貌是不现实的。 先看下FOC的整个流程&#xff1a; 控制变量到三相电流输出的关键部分分为Park逆变换和SVPWM。本文主要讨论…

Flink Hive Catalog最佳实践

Flink Hive Catalog 最佳实践 一、配置与初始化 依赖管理 Hive Connector 版本对齐&#xff1a;需确保 flink-sql-connector-hive 版本与 Hive 版本严格匹配&#xff08;如 Hive 3.1.3 对应 flink-sql-connector-hive-3.1.3_2.12&#xff09;&#xff0c;同时添加 Hadoop 遮蔽…