pytest 运行命令

Posted jane21

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest 运行命令相关的知识,希望对你有一定的参考价值。

1. 第一个(或N个)测试失败后停止

在第一个(N)次失败后停止测试过程:

pytest -x  # 遇到第一个失败时,停止
pytest --maxfail==2  # 遇到第二个失败时,停止

2.指定测试或选择测试

Pytest支持从命令行运行和选择测试的几种方法。

  • 在模块中运行测试
pytest test_mod.py
  • 在目录中运行测试
pytest testing/

目录级运行,即指定运行某一目录下所有测试集(以test_ 开头或者_test结尾的方法或者文件)方式
  • 通过关键字表达式运行测试
pytest -k "MyClass and not method"

注意:执行当前目录下,名字包含MyClass但不包含method的测试用例,所以上面的示例将运行,TestMyClass.test_something 但不会运行TestMyClass.test_method_simple。

  • 按节点ID运行测试

每个收集的测试都分配有一个唯一的nodeid名称,该名称由模块文件名后跟说明符(例如类名,函数名和参数化参数)组成,并用::字符分隔。

要在模块中运行特定的测试,请执行以下操作:

pytest test_file::test_case

test_file,为.py文件

test_case, 为test_file.py中的一个测试用例

在命令行中指定测试方法的另一个示例:命令格式:pytest 文件名.py::测试类::测试方法

pytest test_mod.py::
TestSuite
::test_case
test_case,为TestSuite的成员函数
  • 通过标记表达式运行测试
pytest -m slow
  • 从包运行测试
    • pytest --pyargs pkg.testing
    • 这将导入pkg.testing并使用其文件系统位置来查找并运行测试

3.从Python代码中调用pytest

pytest.main(["-x", "mytestdir"])

注意:调用pytest.main()将导致导入您的测试及其导入的任何模块。由于python导入系统的缓存机制,pytest.main()从同一进程进行后续调用不会反映两次调用之间对这些文件的更改。因此,pytest.main()不建议从同一进程进行多次调用(例如,以重新运行测试)。

 

4.修改Python回溯打印

pytest --showlocals # 打印本地变量
pytest -l           # 打印本地变量

pytest --tb=auto    # 默认模式                 
pytest --tb=long    # 尽可能详细的输出
pytest --tb=short   # 更简短的输出
pytest --tb=line    # 每个失败信息总结在一行中
pytest --tb=native  # Python 标准输出
pytest --tb=no      # 不打印失败信息

--full-trace是一种比--tb=long更详细的输出模式。它甚至能观察到用户打断执行(Ctrl+C)时的回溯信息,而上述六种模式默认是不输出此类信息的。

5.分析测试执行持续时间

要获取最慢的10个测试持续时间的列表:

pytest --durations=10

默认情况下,除非-vv在命令行中传递,否则pytest不会显示太短的测试持续时间(<0.01s)

6.获取版本,选项名称,环境变量

pytest --version   # 获取版本
pytest --fixtures  # 显示可用的内置函数参数
pytest -h | --help # 帮助

7.通过python -m pytest调用pytest

可以从命令行通过Python解释器调用测试:

python -m pytest [...]
但是,这和直接执行pytest [...]命令的效果几乎是一模一样

以上是关于pytest 运行命令的主要内容,如果未能解决你的问题,请参考以下文章

pytest框架-介绍Mark命令运行用例。。。。

如何将命令行参数从pytest传递给代码

入门4-Pytest测试用例运行方式命令行方式运行

pytest 运行命令

python pytest片段

pytest文档59-运行未提交git的用例(pytest-picked)