pytest测试专题 - 1.1 运行pytest

news/2025/2/19 4:43:55/

<< 返回目录

pytest__11_pytest_2">1 pytest学习笔记 - 1.1 运行pytest

1.1 运行pyest

  在命令行执行pytest --help

usage: pytest [options] [file_or_dir] [file_or_dir] [...]
... ...

pytest_10">1.1.1 pytest不携带参数

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

pytest_14">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 == t2def 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 itemstest_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 namedtupleTask = 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 == expecteddef 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 itemstest_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 itemstest_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.

<< 返回目录


http://www.ppmy.cn/news/1572387.html

相关文章

spring集成activiti流程引擎(源码)

前言 activiti工作流引擎项目&#xff0c;企业erp、oa、hr、crm等企事业办公系统轻松落地&#xff0c;请假审批demo从流程绘制到审批结束实例。 源码获取&#xff1a;本文末个人名片直接获取。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器&#xff0c;流行…

服务器防护(ubuntu)

最近发现服务器一直在被暴力破解&#xff0c;具体情况看我上一章节我的服务器被暴力破解&#xff0c;所以在网上整理下检测服务是否已经被别人破解成功和如何防护的方法 1. 如何确认已经被暴力破解 # 查看最近登录成功的Ip, 陌生的 IP 或可疑用户成功登录&#xff0c;则可能已…

站群服务器和普通服务器有哪些不同之处?

站群服务器是一个集中管理工具&#xff0c;可以允许网站管理员同时管理多个网站&#xff0c;但是不要管理员登录每一个网站的后台&#xff0c;在站群模式下&#xff0c;网站管理员通过一个或者多个服务器来托管大量的子站点&#xff0c;可以支持大规模网站的集中管理和优化。 普…

【Linux】多线程 -> 从线程概念到线程控制

线程概念 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行&#xff0c;本质是在进程地址空间内运行。在Linux系统中&#xff0c;在CPU眼…

《麻省理工公开课:线性代数》 中文学习笔记

​ 《麻省理工公开课&#xff1a;线性代数》是麻省理工公开课中广为流传的一门好课。这是我学习MIT线性代数课程 Linear Algebra的中文参考学习笔记。希望在自己学习的同时&#xff0c;也对大家学习有所帮助。 笔记特点&#xff1a; 笔记与原课程视频一一对应&#xff0c;可以…

【网络安全 | 漏洞挖掘】价值3133美元的Google IDOR

未经许可,不得转载。 文章目录 正文正文 目标URL:REDACTED.google.com。 为了深入了解其功能,我查阅了 developer.google.com 上的相关文档,并开始进行测试。 在测试过程中,我发现了一个 XSS 漏洞,但它触发的域名是经过正确沙盒化的 *.googleusercontent.com,这符合 …

SQL 大厂面试题目(由浅入深)

今天给大家带来一份大厂SQL面试覆盖&#xff1a;基础语法 → 复杂查询 → 性能优化 → 架构设计&#xff0c;大家需深入理解执行原理并熟悉实际业务场景的解决方案。 1. 基础查询与过滤 题目&#xff1a;查询 employees 表中所有薪资&#xff08;salary&#xff09;大于 10000…

grep如何排除多个目录?

在使用 grep 进行文本搜索时&#xff0c;有时候需要排除多个目录&#xff0c;避免在这些目录下进行搜索。下面介绍几种不同的实现方式。 目录 1.使用 -r 和 --exclude-dir 选项&#xff08;GNU grep&#xff09; 2.使用扩展正则表达式和 -P 选项&#xff08;GNU grep&#x…