在Python测试场景中,Pytest作为主流的测试框架,支持灵活指定测试范围,其中只运行单个测试文件是最常用的操作之一,能够避免执行无关测试用例,大幅提升调试效率。

基础运行方式:直接指定文件路径
最直接的方式是在终端执行pytest命令时,直接跟上目标测试文件的路径,Pytest会自动识别该文件并执行其中所有符合命名规则的测试用例。
假设项目结构如下:
project/
├── src/
│ └── utils.py
└── tests/
├── test_utils.py
└── test_api.py如果需要运行test_utils.py文件,在项目根目录下执行以下命令即可:
# 相对路径方式 pytest tests/test_utils.py # 绝对路径方式(示例路径,根据实际项目调整) pytest /home/user/project/tests/test_utils.py
常见场景适配
在测试文件所在目录执行
如果已经切换到测试文件所在的目录,可以直接使用文件名作为路径参数:
cd tests pytest test_utils.py
过滤特定测试文件
如果当前目录下有多个测试文件,只想运行其中以指定字符开头的文件,可以结合通配符使用,不过这种方式本质是匹配文件名,仍然属于运行单个或少量指定文件:
# 运行所有以test_utils开头的测试文件 pytest test_utils*.py
注意事项
- 测试文件需要符合Pytest的默认发现规则,即文件名以
test_开头或者以_test结尾,否则直接指定路径也可能无法识别用例。 - 如果测试文件中引用了项目根目录下的模块,建议在项目根目录执行命令,避免相对导入出现路径错误。
- 可以通过添加
-v参数查看详细的用例执行信息,确认是否只运行了目标文件:
pytest tests/test_utils.py -v
代码示例:验证单个测试文件运行
首先编写测试文件test_demo.py:
def test_add():
assert 1 + 2 == 3
def test_sub():
assert 5 - 3 == 2执行单个文件运行的命令:
pytest test_demo.py -v
执行后输出结果只会包含test_demo.py中的两个测试用例的执行情况,不会运行其他测试文件的内容。