使用 Pytest 自动化您的任务:带有示例的实用指南
本篇文章向大家介绍《使用 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"
@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 是一个很好的起点。测试愉快!
本篇关于《使用 Pytest 自动化您的任务:带有示例的实用指南》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!
Golang 函数:如何避免在并发任务执行中出现死锁?
- 上一篇
- Golang 函数:如何避免在并发任务执行中出现死锁?
- 下一篇
- 如何修复Windows VirtualBox中的无法连接USB设备错误
-
- 文章 · python教程 | 28分钟前 | Python GitHubActions 多版本测试 setup-python 缓存依赖
- GitHubActions配置Python环境教程
- 471浏览 收藏
-
- 文章 · python教程 | 1小时前 |
- Python多继承中Mixin用法详解
- 411浏览 收藏
-
- 文章 · python教程 | 1小时前 |
- Python电话号码字母组合:回溯法与常见错误解析
- 478浏览 收藏
-
- 文章 · python教程 | 2小时前 |
- 提升TesseractOCR准确率技巧分享
- 250浏览 收藏
-
- 文章 · python教程 | 2小时前 | 数据库索引 N+1查询 Django数据库查询优化 select_related prefetch_related
- Django数据库查询优化方法详解
- 118浏览 收藏
-
- 文章 · python教程 | 2小时前 |
- Python中处理SIGALRM的sigwait方法
- 318浏览 收藏
-
- 文章 · python教程 | 2小时前 |
- 汉诺塔递归算法详解与代码实现
- 207浏览 收藏
-
- 文章 · python教程 | 4小时前 |
- Tkinter游戏开发:线程实现稳定收入不卡顿
- 383浏览 收藏
-
- 文章 · python教程 | 4小时前 |
- 优化VSCodeJupyter单元格插入方式
- 358浏览 收藏
-
- 文章 · python教程 | 12小时前 |
- Python如何重命名数据列名?columns教程
- 165浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ChatExcel酷表
- ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
- 3194次使用
-
- Any绘本
- 探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
- 3407次使用
-
- 可赞AI
- 可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
- 3437次使用
-
- 星月写作
- 星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
- 4545次使用
-
- MagicLight
- MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
- 3815次使用
-
- Flask框架安装技巧:让你的开发更高效
- 2024-01-03 501浏览
-
- Django框架中的并发处理技巧
- 2024-01-22 501浏览
-
- 提升Python包下载速度的方法——正确配置pip的国内源
- 2024-01-17 501浏览
-
- Python与C++:哪个编程语言更适合初学者?
- 2024-03-25 501浏览
-
- 品牌建设技巧
- 2024-04-06 501浏览

