pytest测试专题 - 1.1 运行pytest

<< 返回目录

1 pytest学习笔记 - 1.1 运行pytest

1.1 运行pyest

  在命令行执行pytest --help

cmd 复制代码
usage: pytest [options] [file_or_dir] [file_or_dir] [...]
... ...

1.1.1 pytest不携带参数

  pytest不带参数时,会扫描当前目录下的所有目录、子目录中符合测试用例标准的文件(test_*.py, *_test.py),并执行这些文件。

1.1.2 pytest携带文件名、目录、或者文件列表、目录列表

  • 携带文件名:执行指定文件名中的测试用例(函数名满足test_...)。
  • 携带目录名:执行指定目录中的所有测试文件中的所有测试用例(文件名满足:test_....py..._test.py)。
  • 携带文件列表:执行文件列表中所有文件中的所有测试用例。
  • 携带目录列表:执行指定目录列表中的所有测试文件中的所有用例(会递归扫描所有子目录)。

1.2 实战案例

1.2.1 样例1:命名元组对象测试-1

执行命令: pytest -sv test_ch1_001.py

py 复制代码
# ---------------------------------------------------------------------------
# @file       test_ch1_001.py
# @brief      测试用例样例
# ---------------------------------------------------------------------------

from collections import namedtuple
Task = namedtuple('Task', ['summary', 'owner', 'done', 'id'])
Task.__new__.__defaults__ = (None, None, False, None)

def test_defaults():
    """Using no parameters should invoke defaults."""
    t1 = Task()
    t2 = Task(None, None, False, None) 
    assert t1 == t2

def test_member_access():
    """Check .field functionality of namedtuple."""
    t = Task('buy milk', 'brian')
    assert t.summary == 'buy milk'
    assert t.owner == 'brian'
    assert (t.done, t.id) == (False, None)

输出报文:

cmd 复制代码
============================= test session starts =============================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 -- C:\Program Files\Python313\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.13.1', 'Platform': 'Windows-10-10.0.19045-SP0', 'Packages': {'pytest': '8.3.4', 'pluggy': '1.5.0'}, 'Plugins': {'check': '2.4.1', 'html': '4.1.1', 'metadata': '3.1.1', 'timeout': '2.3.1', 'xdist': '3.6.1'}}
rootdir: D:\TYYSOFT\Study\Python\pytest
configfile: pytest.ini
plugins: check-2.4.1, html-4.1.1, metadata-3.1.1, timeout-2.3.1, xdist-3.6.1
collecting ... collected 2 items

test_ch1_001.py::test_defaults PASSED
test_ch1_001.py::test_member_access PASSED

- Generated html report: file:///D:/TYYSOFT/Study/Python/pytest/tasks/report.html -
============================== 2 passed in 0.03s ==============================

1.2.2 样例2:命名元组对象测试-2

执行命令:pytest -sv test_ch1_002.py

py 复制代码
# ---------------------------------------------------------------------------
# @file       test_ch1_002.py
# @brief      测试命名元组
# ---------------------------------------------------------------------------

from collections import namedtuple

Task = namedtuple('Task', ['summary', 'owner', 'done', 'id']) 
Task.__new__.__defaults__ = (None, None, False, None)

def test_asdict():
    """_asdict() should return a dictionary."""
    t_task = Task('do something', 'okken', True, 21) 
    t_dict = t_task._asdict()
    expected = {'summary': 'do something',
        'owner': 'okken', 
        'done': True, 
        'id': 21}
    assert t_dict == expected

def test_replace():
    """replace() should change passed in fields."""
    t_before = Task('finish book', 'brian', False) 
    t_after = t_before._replace(id=10, done=True) 
    t_expected = Task('finish book', 'brian', True, 10) 
    assert t_after == t_expected

输出结果:

cmd 复制代码
============================= test session starts =============================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 -- C:\Program Files\Python313\python.exe
cachedir: .pytest_cache
metadata: {'Python': '3.13.1', 'Platform': 'Windows-10-10.0.19045-SP0', 'Packages': {'pytest': '8.3.4', 'pluggy': '1.5.0'}, 'Plugins': {'check': '2.4.1', 'html': '4.1.1', 'metadata': '3.1.1', 'timeout': '2.3.1', 'xdist': '3.6.1'}}
rootdir: D:\TYYSOFT\Study\Python\pytest
configfile: pytest.ini
plugins: check-2.4.1, html-4.1.1, metadata-3.1.1, timeout-2.3.1, xdist-3.6.1
collecting ... collected 2 items

test_ch1_002.py::test_asdict PASSED
test_ch1_002.py::test_replace PASSED

- Generated html report: file:///D:/TYYSOFT/Study/Python/pytest/tasks/report.html -
============================== 2 passed in 0.03s ==============================

1.2.3 样例3:运行文件列表

执行命令

cmd 复制代码
 pytest test_ch1_001.py test_ch1_002.py
======================================= test session starts =======================================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
rootdir: D:\TYYSOFT\Study\Python\pytest
configfile: pytest.ini
plugins: check-2.4.1, html-4.1.1, metadata-3.1.1, timeout-2.3.1, xdist-3.6.1
collected 4 items

test_ch1_001.py ..                                                                           [ 50%]
test_ch1_002.py ..                                                                           [100%]

--------- Generated html report: file:///D:/TYYSOFT/Study/Python/pytest/tasks/report.html ---------
======================================== 4 passed in 0.03s ========================================

注:其他种运行方式,读者可以自行尝试。


作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来源自豆包AI,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!

Copyright © 2022~2025 All rights reserved.

<< 返回目录

相关推荐
不会代码的小猴5 小时前
21. 泛型编程上
开发语言·c++·笔记·算法
摇滚侠7 小时前
《SpringBoot 3:入门与应用实战》第 2 章 IOC 思想与实现 阅读笔记 1
spring boot·笔记·后端
蒸蒸yyyyzwd7 小时前
秋招不熟悉力扣学习笔记1
笔记·学习·leetcode
LuminousCPP9 小时前
数据结构-双向循环链表
c语言·数据结构·笔记·链表
小弥儿9 小时前
GitHub今日热榜 | 2026-08-11:图原生基础设施首日登顶
学习·开源·github
302wanger10 小时前
【阅读笔记】当AI拿走一切之后
笔记
疯狂打码的少年12 小时前
【数据结构】串(字符串):基本概念与存储
数据结构·笔记
for_ever_love__12 小时前
python基础语法学习: 数据容器
windows·python·学习
云空12 小时前
《电子专业完整学习路线图(分两套:本科四年版 / 零基础自学速成版)》
科技·学习·学习方法·高考
min(a,b)12 小时前
学习第16天:LangGraph 与 Agent 工作流编排
学习