如何用 pytest 只运行指定测试文件
在使用 pytest 进行测试时,有时我们只想运行特定的测试文件而不是整个测试套件。pytest 提供了多种灵活的方式来实现这一需求。
方法一:直接指定文件路径
最简单的方法是直接在命令行中指定要运行的测试文件路径:
pytest test_module.py
如果要运行特定目录下的测试文件:
pytest tests/test_feature.py
方法二:使用 -k 选项按名称模式匹配
-k 选项允许你通过测试函数或类的名称模式来运行测试:
pytest -k "test_login or test_logout"
这会运行所有名称中包含 "test_login" 或 "test_logout" 的测试。
方法三:使用 -m 选项按标记运行
如果你使用了 pytest 的标记功能,可以按标记来运行测试:
pytest -m "slow"
这会运行所有被标记为 "slow" 的测试。
方法四:在 pytest.ini 中配置
你还可以在项目根目录下创建 pytest.ini 文件来配置默认行为:
[pytest] addopts = -v --tb=short testpaths = tests python_files = test_*.py *_test.py
这样配置后,pytest 会自动在 tests 目录下查找以 test_ 开头或以 _test.py 结尾的文件。
方法五:使用 Python 路径指定
如果需要从特定模块导入测试,可以使用 Python 路径:
pytest path/to/module.py::TestClass::test_method
实际应用示例
假设你有以下测试文件结构:
tests/
test_auth.py
test_payment.py
test_user.py
要只运行认证相关的测试:
pytest tests/test_auth.py
或者运行所有以 "user" 开头的测试:
pytest -k "user"
总结
pytest 提供了多种方式让你灵活地运行指定的测试文件或测试函数。根据你的具体需求,可以选择最适合的方法:
直接指定文件路径是最简单直接的方法
-k 选项适合按名称模式运行测试
-m 选项适合按标记运行测试
pytest.ini 配置适合设置项目级别的默认行为
掌握这些技巧可以大大提高你的测试效率,特别是在大型项目中。