pytest -m
是 pytest 测试框架中的一个命令行选项,用于通过标记(marker)来选择性地运行测试。标记是一种将特定的元数据与测试函数关联起来的方式,可以用来对测试进行分类、分组或筛选。
使用 -m
选项时,后面通常跟着一个表达式,用于指定要运行的测试的标记。这个表达式可以是一个简单的标记名称,也可以是一个更复杂的逻辑表达式。
下面是一些使用 pytest -m
的示例:
- 运行带有特定标记的测试:
如果你有一些测试函数被标记为 slow
,你可以使用以下命令只运行这些测试:
pytest -m slow
- 排除带有特定标记的测试:
如果你想运行所有测试,但排除被标记为 slow
的测试,你可以使用以下命令:
pytest -m "not slow"
- 组合多个标记:
你可以使用逻辑运算符(如 and
、or
和 not
)来组合多个标记。例如,如果你想运行被标记为 fast
或 critical
的测试,你可以使用以下命令:
pytest -m "fast or critical"
- 使用自定义标记:
你还可以定义自己的标记,并在测试函数中使用它们。例如,你可以创建一个标记 my_feature
,并使用它来标记与特定功能相关的测试。然后,你可以使用以下命令来运行这些测试:
pytest -m my_feature
为了在测试函数中使用标记,你可以使用 @pytest.mark
装饰器。例如:
import pytest
@pytest.mark.slow
def test_slow_function():
# 这是一个被标记为 'slow' 的测试函数
pass
@pytest.mark.fast
def test_fast_function():
# 这是一个被标记为 'fast' 的测试函数
pass
在这个例子中,test_slow_function
被标记为 slow
,而 test_fast_function
被标记为 fast
。然后,你可以使用 pytest -m
命令来选择性地运行这些测试。