You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代码内调用pytest时如何仅运行当前文件内的测试用例

实现方法

给pytest.main()传入当前文件的路径作为执行目标即可。无参调用pytest.main()时,pytest默认会扫描当前工作目录下所有符合测试命名规则的文件,显式指定单文件路径后,就只会收集、运行该文件内的测试用例,不会遍历其他路径。

最简写法

修改foo.py的入口块代码:

# ... 上方业务代码、测试用例保持原有逻辑不变 ...

if __name__ == '__main__':
    import pytest
    pytest.main([__file__])

Python运行时会给内置变量__file__自动赋值为当前脚本的路径,直接传给pytest作为测试收集目标就行。此时执行python foo.py,就只会运行当前文件内的test_foo、test_bar两个用例,不会扫描目录下其他文件的测试。

扩展参数配置

如果需要附加pytest运行参数,比如输出详细执行日志、显示测试中的打印内容,直接在参数列表里追加对应命令行选项即可,规则和终端调用pytest完全一致:

if __name__ == '__main__':
    import pytest
    # -v:输出详细用例执行结果,-s:显示测试过程中的标准输出(print内容)
    pytest.main([__file__, '-v', '-s'])

跨工作目录兼容写法

如果需要在任意工作目录下调用这个脚本(比如执行python /opt/scripts/foo.py这类绝对路径调用场景),担心相对路径识别异常,可以把路径转为绝对路径后再传入,Python 3.4+ 可直接用标准库pathlib实现,不需要额外安装依赖:

from pathlib import Path

if __name__ == '__main__':
    import pytest
    pytest.main([str(Path(__file__).resolve())])

注意:pytest.main()接收的参数是和命令行argv格式一致的列表,不要直接传入字符串形式的路径,否则会被pytest拆分为单字符选项解析,触发报错。


内容的提问来源于stack exchange,提问作者Alnitak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 18:01:04