当前位置: 首页 > news >正文

pytest测试专题 - 1.1 运行pytest

<< 返回目录

1 pytest学习笔记 - 1.1 运行pytest

1.1 运行pyest

  在命令行执行pytest --help

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

# ---------------------------------------------------------------------------
# @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)

输出报文:

============================= 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

# ---------------------------------------------------------------------------
# @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

输出结果:

============================= 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:运行文件列表

执行命令

 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.

<< 返回目录

相关文章:

  • AT32系列微控制器低压电机控制开发板
  • 单例模式详解(Java)
  • linux_kernel驱动开发_驱动调试_debug
  • 【HUSTOJ 判题机源码解读系列02】judged 守护进程工作流程
  • 能源物联网数据采集网关 多协议对接解决方案
  • 基于LVS负载均衡练习
  • WPS接入DeepSeek模型
  • 【Python3教程】Python3基础篇之条件控制
  • AI驱动的直播带货电商APP开发:个性化推荐、智能剪辑与互动玩法
  • MySQL索引和其底层数据结构介绍
  • 深入理解 MyBatis 框架的核心对象:SqlSession
  • DeepSeek 的 API 服务引入 WPS Office
  • Openssl的使用,CA证书,中间证书,服务器证书的生成与使用
  • RocketMQ和Kafka如何实现顺序写入和顺序消费?
  • 01、单片机上电后没有正常运行怎么办
  • C#使用实体类Entity Framework Core操作mysql入门:从数据库反向生成模型2 处理连接字符串
  • 2D小游戏-创新设计——《弹射挑战》
  • 【数据处理】使用python收集网络数据--爬虫基础
  • 【学习笔记】计算机网络(三)
  • Conda 虚拟环境与 venv、virtualenv、pipenv 的对比
  • 阿里云虚拟主机如何安装wordpress/佛山百度提升优化
  • 备案号是哪个网站/软文推广的优点
  • 苏州招聘网站制作/企业网站建设
  • 大连网站建设谁家好/网站历史权重查询
  • wordpress的功能/南京seo网络优化公司
  • 中小网站公司做的推广怎么样/关键词你们都搜什么