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.

<< 返回目录

相关推荐
dxnb2224 分钟前
Datawhale25年10月组队学习:math for AI+Task3线性代数(下)
人工智能·学习·线性代数
Century_Dragon25 分钟前
【世纪龙科技】新能源汽车动力电池拆装与检测虚拟实训软件介绍
学习
w2vmany28 分钟前
postmessage xss初步学习
前端·学习·xss
峰顶听歌的鲸鱼31 分钟前
1.云计算与服务器基础
运维·服务器·笔记·云计算·学习方法
Kay_Liang44 分钟前
大语言模型如何精准调用函数—— Function Calling 系统笔记
java·大数据·spring boot·笔记·ai·langchain·tools
bnsarocket1 小时前
Verilog和FPGA的自学笔记7——流水灯与时序约束(XDC文件的编写)
笔记·fpga开发
立志成为大牛的小牛1 小时前
数据结构——二十五、邻接矩阵(王道408)
开发语言·数据结构·c++·学习·程序人生
wdfk_prog1 小时前
[Linux]学习笔记系列 -- [kernel][irq]softirq
linux·笔记·学习
摇滚侠1 小时前
Spring Boot 3零基础教程,WEB 开发 内容协商机制 笔记34
java·spring boot·笔记·缓存
71-31 小时前
C语言——关机小程序(有system()和strcmp()函数的知识点)
c语言·笔记·学习