Pytest参数详解 — 基于命令行模式

Hey,大家周二好啊!今天我们来聊聊一个非常实用的话题:Pytest的命令行参数。Pytest是一个强大的Python测试框架,它支持简单的单元测试和复杂的功能测试。但是,你真的了解如何充分利用Pytest的命令行参数来优化你的测试流程吗?如果你还不是很清楚,那么这篇文章就是为你准备的!

在Python的世界里,有多种测试框架,但Pytest以其简洁的语法、丰富的插件生态和强大的功能脱颖而出。它支持参数化测试、fixtures(固定装置)、插件系统等,这些都使得编写和运行测试变得更加高效。

Pytest的命令行接口提供了丰富的参数,可以帮助你控制测试的执行方式。这些参数不仅可以帮助你选择特定的测试用例,还可以调整测试的输出格式,甚至集成到持续集成系统中。下面,我们就来一探究竟。

1、--collect-only

查看在给定的配置下哪些测试用例会被执行

2、-k

使用表达式来指定希望运行的测试用例。如果测试名是唯一的或者多个测试名的前缀或者后缀相同,可以使用表达式来快速定位,例如:

命令行-k参数.png

3、-m

标记(marker)用于标记测试并且分组,以便快速选中并运行。使用 @pytest.mark 来标记。

  • 可以使用 -m "mark1 and mark2" 同时选中贷有这两个标记的所有测试用例。

  • 使用 -m "mark1 and not mark2" 则会选中有mark1的测试用例,而过滤掉 mark2 的测试用例。

  • 使用 -m "mark1 or mark2" 选中带有 mark1 或者 mark2 的所有测试用例

4、-x

正常情况下 pytest 会运行每一个搜集到的测试用例。如果某个测试用例断言失败,或者触发了异常,那么该测试用例的运行就会到此停止。pytest 会将其标记为失败后继续运行下一个测试用例。但是在 debug 时,如果需要遇到失败立即停止整个会话可以加上 -x。调试完成后可以去掉 -x,可以使用 -tb=no 关闭错误信息回溯。

5、--maxfail=num

-x 是遇到失败就停止运行,而 --maxfail 则可以指定允许失败几次,达到最大失败次数以后停止运行

6、-s 与 --capture=method

-s 等价于 --capture=no ,关闭了输出捕获。正常情况下,任何符合标准的输出流信息都会被捕获。--capture=fd 时,若文件描述符(file descriptor)为1或者2,则会被输出至临时文件中。使用 --capture=sys 时sys.stdout/stderr 将会被输出至内存。

7、-l/--showlocals

在测试失败时会打印出局部变量名和他们的值以避免不必要的 print 语句

8、--if/--ff

当一个或者多个测试用例失败时,如果希望定位到最后一个失败的用例重新运行,可以使用 --lf。--ff 与 --lf 基本相同,不同的在于 --ff 会运行完剩余的测试用例

9、-v

使得输出信息更详细,不加的情况下每个文件显示一行,加了以后每条用例显示一行,测试名与结果都会显示出来而不仅仅是一个点或者一个字符

10、-q

与 -v 相反,简化输出信息。

11、--tb=style

  • --tb=style:决定捕捉到的失败时输出信息的显示方式。
  • --tb=no:屏蔽全部回溯信息
  • --tb=line:打印错误的位置

  • --tb=short:较 no 和 line 更详细,给出错误信息

  • --tb=long:输出最为详细的信息

  • --tb=auto:默认值,如果有多个用例失败,仅打印第一个和最后一个用例的回溯信息,格式为 long

  • --tb=native:只输出 Python 标准库的回溯信息

12、--duration=N

可以加快测试节奏,统计测试过程中哪个阶段时最慢的,包括测试用例的 call、setup、teardown。他会显示最慢的 N 各阶段,耗时越长越靠前,如果 N = 0,则会将所有阶段按照耗时从长到短排序后显示

Pytest的命令行参数是其强大功能的一部分,它们可以帮助你更有效地编写和运行测试。通过掌握这些参数,你可以定制测试流程,使其更加符合你的需求。希望这篇文章能帮助你更好地利用Pytest,提升你的测试效率。如果你有任何问题或想要分享你的Pytest使用经验,欢迎在评论区留言!

别忘了点赞和关注,获取更多Python和测试相关的精彩内容!

相关推荐
互联网杂货铺3 小时前
Python测试框架—pytest详解
自动化测试·软件测试·python·测试工具·测试用例·pytest·1024程序员节
美团测试工程师1 天前
使用pytest单元测试框架执行单元测试
单元测试·pytest
橘生淮南@11 天前
pytest执行用例时从conftest.py抛出ModuleNotFoundError:No module named ‘XXX‘异常的解决办法
pytest
惜.己2 天前
软件测试(基础+手动测试+接口测试+pytest+allure+postman)
python·功能测试·测试工具·pycharm·单元测试·pytest·接口测试·1024程序员节
是阿尘呀4 天前
Pytest+Allure+飞书机器人
开发语言·python·机器人·pytest·飞书
开心呆哥4 天前
【pytest中同一个用例多次执行生成一个测试报告的方法】
linux·服务器·pytest
blues_C4 天前
Pytest-Bdd-Playwright 系列教程(2):支持在多浏览器、多环境中执行测试
自动化测试·pytest·bdd·playwright
测试杂货铺5 天前
Pytest自动化测试执行环境切换的两种解决方案
自动化测试·软件测试·python·测试工具·测试用例·pytest·1024程序员节
惜.己6 天前
Appium中的api(二)
python·测试工具·pycharm·单元测试·appium·pytest·1024程序员节
惜.己6 天前
Appium环境搭建全流程(含软件)
python·测试工具·node.js·appium·pytest·安卓·1024程序员节