软件测试/测试开发/全日制|Pytest如何灵活地运行用例
前言
Pytest能够满足我们对单元测试框架的许多要求,它简洁易用,同时提供了丰富的功能来进行测试用例的管理和执行。在本文中,我们将深入探讨如何使用 Pytest 运行多条测试用例、测试文件或测试包,并且指定运行特定的测试用例,并对执行结果进行分析。
运行多条测试用例/文件/包
Pytest 具备强大的测试集合管理功能,可以轻松地运行多条测试用例、测试文件或测试包。要运行整个包中的测试用例,只需在命令行中运行:
pytest <包名>
# 举例
pytest testcase2
-------------
结果如下:
pytest testcase2
======================================================================= test session starts =======================================================================
platform win32 -- Python 3.7.7, pytest-7.2.2, pluggy-1.0.0
rootdir: C:\Users\89703\PycharmProjects\flask_demo, configfile: pytest.ini
plugins: anyio-3.6.2, base-url-2.0.0, rerunfailures-13.0
collected 4 items
testcase2\test_c.py 登录步骤
.注册步骤
R注册步骤
R注册步骤
F购物流程
.购物车流程
.
============================================================================ FAILURES =============================================================================
__________________________________________________________________________ test_register __________________________________________________________________________
@pytest.mark.run(order=1)
def test_register():
"""注册用例"""
print("注册步骤")
> assert False
E assert False
......
运行单个测试文件
pytest <文件名>
# 举例
pytest testcase2/test_b.py
======================================================================= test session starts =======================================================================
platform win32 -- Python 3.7.7, pytest-7.2.2, pluggy-1.0.0
rootdir: C:\Users\89703\PycharmProjects\flask_demo, configfile: pytest.ini
plugins: anyio-3.6.2, base-url-2.0.0, rerunfailures-13.0
collected 1 item
testcase2\test_b.py b
.
======================================================================== 1 passed in 0.03s ========================================================================
注:运行特定的测试模块或路径下的所有测试文件,可以使用通配符或者路径:
pytest <路径/通配符>
运行指定测试用例
有时候,我们可能只需要运行特定的测试用例而不是全部。Pytest 提供 -k
参数来实现这个目的。可以使用 -k
参数并提供用例名称或匹配模式来选择要运行的测试用例。比如:
pytest -k "test_method_name"
# 示例
pytest -k test_d
======================================================================= test session starts =======================================================================
platform win32 -- Python 3.7.7, pytest-7.2.2, pluggy-1.0.0
rootdir: C:\Users\89703\PycharmProjects\flask_demo\testcase1
plugins: anyio-3.6.2, base-url-2.0.0, rerunfailures-13.0
collected 4 items / 1 deselected / 3 selected
test_a.py . [ 33%]
test_demo01.py . [ 66%]
test_demo03.py . [100%]
================================================================= 3 passed, 1 deselected in 0.04s =================================================================
执行结果分析
Pytest 提供了丰富的输出信息来展示测试执行的结果。当测试运行结束后,它会展示每个测试用例的状态(通过、失败、跳过等)。如果有测试失败,Pytest 会显示失败的具体信息,包括断言失败的位置和相关的数据。此外,Pytest 还能生成详细的报告,以便更好地分析测试结果。
使用示例
假设有一个简单的测试文件 test_example.py
包含以下内容:
# test_example.py
def test_addition():
assert 1 + 2 == 3
def test_subtraction():
assert 5 - 2 == 3
def test_multiplication():
assert 2 * 3 == 6
运行整个文件并查看结果:
pytest test_example.py
----------------
============================= test session starts =============================
collecting ... collected 3 items
test_a.py::test_addition PASSED [ 33%]
test_a.py::test_subtraction PASSED [ 66%]
test_a.py::test_multiplication PASSED [100%]
============================== 3 passed in 0.03s ==============================
运行指定的测试用例:
pytest -k "test_subtraction"
-----------------------
============================= test session starts =============================
collecting ... collected 1 item
test_a.py::test_subtraction PASSED [100%]
============================== 1 passed in 0.02s ==============================
总结
Pytest 提供了便捷而灵活的方法来管理和运行测试用例,无论是整个包、单个文件还是特定的测试用例。执行结果的详细信息可以帮助我们快速定位并解决代码中的问题。希望本文能够帮到大家!
推荐
Python全栈开发与自动化测试开发班
由浅入深实战进阶,从小白到高手
以Python全栈开发为基础,深入教授自动化测试技能,为学员打造全面的技术能力。通过系统学习和实际项目实战,学员将具备在职场中脱颖而出的竞争力。不仅能够灵活运用Python进行开发,还能够保障项目质量通过自动化测试手段。这是一个全面提升职业竞争力的机会。
课程详情
Python开发必备基础技能与项目实战
Pvthon 编程语言/算法和数据结构/面向对象编程Web后端开发/前端开发/测试管理平台项目实战
人工智能ChatGPT实战
人工智能辅助学习各种开发和测试技能/Pytorch深度学框架/平台开发实战
数据分析与自动化办公
数据采集/Pandas与数据处理技术/ECharts与数据可视化技术/爬虫实战/自动化办公/批量文件处理
UI自动化测试与高级项目实战
Web自动化测试/App自动化测试/ PageObject设计模式
接口自动化测试
接口协议分析/Mock实战/服务端接口测试
性能测试
性能测试流程与方法/JMeter 脚本参数化/Grafana监控系统搭建
简历指导与模拟面试
1V1简历指导/模拟真实面试/测试开发岗面试全攻略名企私教服务
名企专家1v1辅导/行业专家技术指导/针对性解决工作难题/绩效提升辅导与晋升复盘
课程亮点
名企私教服务 先学习后付费 高额奖学金
专属社群+晚自习在线答疑
5V1全方位辅导作业+考试强化学习效果
简历修改 模拟面试 就业内推 面试复盘
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2022-01-11 利器 | REST Assured 实践(二):断言实现霍格沃兹测试学院祝您牛年大吉,牛气冲天!
2022-01-11 10行代码+1个插件,让前端性能测试效率提升50倍!
2022-01-11 测试人如何突破职业瓶颈,实现指数级成长?| 测试大咖在线沙龙
2022-01-11 您有一份来自社区的礼物请查收
2022-01-11 有奖征集 | 2020 年度总结 & 2021 新年目标 Flag!
2022-01-11 从 0 开始学 Python 自动化测试开发(二):环境搭建
2022-01-11 【北京/杭州】蚂蚁金服人工智能部招聘测试开发工程师