0

0

使用 Pytest 自动化您的任务:带有示例的实用指南

花韻仙語

花韻仙語

发布时间:2024-10-09 09:42:32

|

1155人浏览过

|

来源于dev.to

转载

使用 pytest 自动化您的任务:带有示例的实用指南

自动化是现代软件开发和测试的关键部分。它可以节省时间、减少人工错误并确保跨流程的一致性。 pytest 框架是 python 中最流行、最强大的自动化任务工具之一,特别是在测试方面。它轻量级、易于使用,并提供大量插件和内置功能来简化自动化过程。

在本文中,我们将探索使用 pytest 框架自动化任务的最佳方法。我们将通过三个实际示例来演示 pytest 如何有效地自动化不同类型的任务。

为什么使用 pytest?
在深入示例之前,我们先讨论一下为什么 pytest 是任务自动化的绝佳选择:

简单性:pytest 具有简单简洁的语法,可以轻松编写和阅读测试用例。
可扩展性:通过广泛的插件和挂钩,pytest 可以扩展以支持不同的测试需求。
fixtures:pytest提供了fixtures,这是一个强大的功能,用于设置测试的前提条件或状态,增强可重用性。
集成:pytest 与其他工具(包括 ci/cd 平台)很好地集成,实现端到端自动化。

示例 1:使用 pytest 自动化 api 测试
api 是许多应用程序的支柱,确保其可靠性至关重要。 pytest 与 requests 库一起,可以轻松实现 api 测试的自动化。

第 1 步:安装所需的库
首先,确保您安装了 pytest 和 requests 库:

pip install pytest 请求
第2步:编写测试脚本
让我们自动向公共 api(例如 jsonplaceholder)发送一个简单的 get 请求,这是一个用于测试的虚假在线 rest api。

`导入请求
导入 pytest

定义基本 url

base_url = "https://jsonplaceholder.typicode.com"

Napkin AI
Napkin AI

Napkin AI 可以将您的文本转换为图表、流程图、信息图、思维导图视觉效果,以便快速有效地分享您的想法。

下载

@pytest.fixture
def api_client():
# 该装置提供了一个用于发出 api 请求的会话对象
session = requests.session()
收益会话
session.close()

def test_get_posts(api_client):
# 发送 get 请求来获取帖子
响应 = api_client.get(f"{base_url}/posts")
# 断言
断言response.status_code == 200
assert len(response.json()) > 0, "未找到帖子"`

说明:
fixture (api_client):这个fixture设置了一个可重用的会话来发出http请求,确保我们不需要每次都创建一个新的会话。
测试函数 (test_get_posts):此函数向 /posts 端点发送 get 请求并验证:
状态码为200,表示成功。
回复中至少包含一篇帖子。
第 3 步:运行测试
要执行测试,请运行以下命令:

狂欢
复制代码
pytest -v test_api.py
为什么这有效
该测试简洁且可重用,利用 pytest 的装置来处理设置和拆卸。
pytest 的输出显示哪些测试通过或失败,从而可以轻松跟踪 api 随着时间的推移的可靠性。

示例 2:使用 pytest 和 selenium 自动化 web ui 测试
web ui 测试可确保应用程序的前端按预期运行。 pytest 可以与 selenium 结合来有效地自动化这些任务。

第 1 步:安装所需的库
安装 pytest、selenium 和 webdriver manager:

pip install pytest selenium webdriver-manager
第2步:编写测试脚本
以下是如何自动化一个简单的 web ui 测试来验证 google 上的搜索功能:

`导入 pytest
从 selenium 导入 webdriver
从 selenium.webdriver.common.by 导入 by
从 selenium.webdriver.common.keys 导入密钥
从 webdriver_manager.chrome 导入 chromedrivermanager

@pytest.fixture
def browser():
# 设置 chrome webdriver
driver = webdriver.chrome(chromedrivermanager().install())
产量驱动因素
driver.quit()

def test_google_search(浏览器):
# 导航至 google
browser.get("https://www.google.com")`{% endraw %}

# Find the search box and enter a query
search_box = browser.find_element(By.NAME, "q")
search_box.send_keys("Pytest Automation")
search_box.send_keys(Keys.RETURN)

# Assert that results are shown
results = browser.find_elements(By.CSS_SELECTOR, "div.g")
assert len(results) > 0, "No search results found"

说明:
夹具(浏览器):此夹具使用 webdriver-manager 设置 chrome webdriver 实例,并确保每次测试后正确关闭它。
测试函数(test_google_search):该函数:
打开 google 主页。
搜索“pytest 自动化”。
断言搜索至少返回一个结果。
第 3 步:运行测试
使用以下命令执行测试:

{% raw %}pytest -v test_ui.py
为什么这有效
pytest 的固定装置管理浏览器实例,使测试设置和拆卸干净高效。
使用 selenium,脚本像真实用户一样与网页交互,确保 ui 按预期运行。
示例 3:使用 pytest 和 pandas 自动进行数据验证
数据验证在数据工程、分析和 etl 过程中至关重要。 pytest 可以使用 pandas 库自动执行数据验证任务。

第 1 步:安装所需的库
确保安装了 pytest 和 pandas:

pip install pytest pandas
第2步:编写测试脚本
让我们自动化执行一个任务,验证数据集是否满足某些条件(例如,没有空值、正确的数据类型等)。

`导入 pytest
将 pandas 导入为 pd

@pytest.fixture
defsample_data():
# 创建一个示例 dataframe
数据 = {
“名字”:[“爱丽丝”,“鲍勃”,“查理”,“大卫”],
“年龄”: [25, 30, 35, 40],
“电子邮件”:[“alice@example.com”,“bob@example.com”,无,“david@example.com”]
}
df = pd.dataframe(数据)
返回 df

def test_data_not_null(sample_data):
# 检查dataframe中是否有空值
断言sample_data.isnull().sum().sum() == 0,“数据包含空值”

def test_age_column_type(sample_data):
# 验证“age”列是否为整数类型
断言sample_data['age'].dtype == 'int64',“年龄列不是整数类型”`
说明:
fixture (sample_data):这个fixture设置一个示例dataframe,模拟一个可以在多个测试中重复使用的数据集。
测试函数(test_data_not_null):此测试检查 dataframe 中是否存在空值,如果发现则失败。
测试函数(test_age_column_type):该测试验证age列是否为整数类型,保证数据一致性。
第 3 步:运行测试
使用以下命令执行测试:

pytest -v test_data.py
为什么有效
pytest 的灵活性允许以数据为中心的测试,确保数据集满足预期标准。
该夹具可以轻松设置和修改测试数据,而无需重复代码。
使用 pytest 自动化任务的最佳实践
使用夹具进行安装和拆卸:夹具有助于有效管理安装和拆卸,使您的测试模块化且可重用。
利用插件:pytest 拥有各种插件(例如,用于 html 报告的 pytest-html、用于并行执行的 pytest-xdist)来增强您的自动化工作。
参数化测试:使用@pytest.mark.parametrize测试多组数据或输入,减少代码重复。
与 ci/cd 管道集成:将 pytest 测试与 jenkins 或 github actions 等 ci/cd 工具集成以进行持续测试。

结论
pytest 是一个强大的工具,可自动执行从 api 和 web ui 测试到数据验证的各种任务。它的简单性、灵活性和广泛的插件支持相结合,使其成为开发人员和 qa 工程师的绝佳选择。通过利用 pytest 的功能(例如固定装置、参数化以及与 ci/cd 管道的集成),您可以构建健壮、可维护且可扩展的自动化框架。

如果您希望自动化工作流程或增强测试过程,pytest 是一个很好的起点。测试愉快!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

457

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

82

2025.09.10

chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

1065

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

845

2023.11.06

Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

81

2025.12.04

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

34

2026.01.31

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 43.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号