写点什么

软件测试 / 测试开发 / 全日制|Pytest 如何灵活地运行用例

  • 2024-01-08
    北京
  • 本文字数:2590 字

    阅读完需:约 8 分钟

前言

Pytest 能够满足我们对单元测试框架的许多要求,它简洁易用,同时提供了丰富的功能来进行测试用例的管理和执行。在本文中,我们将深入探讨如何使用 Pytest 运行多条测试用例、测试文件或测试包,并且指定运行特定的测试用例,并对执行结果进行分析。

运行多条测试用例/文件/包

Pytest 具备强大的测试集合管理功能,可以轻松地运行多条测试用例、测试文件或测试包。要运行整个包中的测试用例,只需在命令行中运行:


pytest <包名>
# 举例pytest testcase2-------------结果如下:pytest testcase2======================================================================= test session starts =======================================================================platform win32 -- Python 3.7.7, pytest-7.2.2, pluggy-1.0.0rootdir: C:\Users\89703\PycharmProjects\flask_demo, configfile: pytest.iniplugins: anyio-3.6.2, base-url-2.0.0, rerunfailures-13.0collected 4 items
testcase2\test_c.py 登录步骤.注册步骤R注册步骤R注册步骤F购物流程.购物车流程.
============================================================================ FAILURES ============================================================================= __________________________________________________________________________ test_register __________________________________________________________________________
@pytest.mark.run(order=1) def test_register(): """注册用例""" print("注册步骤")> assert FalseE assert False
......
复制代码


运行单个测试文件


pytest <文件名>
# 举例
pytest testcase2/test_b.py======================================================================= test session starts =======================================================================platform win32 -- Python 3.7.7, pytest-7.2.2, pluggy-1.0.0rootdir: C:\Users\89703\PycharmProjects\flask_demo, configfile: pytest.iniplugins: anyio-3.6.2, base-url-2.0.0, rerunfailures-13.0collected 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.0rootdir: C:\Users\89703\PycharmProjects\flask_demo\testcase1plugins: anyio-3.6.2, base-url-2.0.0, rerunfailures-13.0collected 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.pydef 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 提供了便捷而灵活的方法来管理和运行测试用例,无论是整个包、单个文件还是特定的测试用例。执行结果的详细信息可以帮助我们快速定位并解决代码中的问题。希望本文能够帮到大家!

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
软件测试/测试开发/全日制|Pytest如何灵活地运行用例_霍格沃兹测试开发学社_InfoQ写作社区