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

vcrpy测试文件如何从父目录导入模块?

问题

在vcrpy项目里,tests/integration/test_filter.py这个测试文件直接导入了父目录下的assertions模块(写法是from assertions import ...),既没用常规的相对导入from ..assertions import ...,代码里也没修改PYTHONPATH,为啥能正常跑起来?

背后的机制

核心原因是项目靠pytest的配置文件悄悄修改了Python的模块搜索路径:

  • 项目根目录下的pytest.ini里有一行配置pythonpath = tests,这条配置会让pytest在启动测试时,自动把tests目录加到Python的模块搜索路径(sys.path)里。
  • 等tests目录进了搜索路径,该目录下的所有.py文件就都变成了可以直接导入的顶层模块——所以test_filter.py里直接写from assertions import ...,Python就能找到tests/assertions.py这个文件,根本不需要用相对导入。

顺带提一句:pytest本身默认也会把运行命令的目录(也就是项目根目录)加到sys.path,但这里起关键作用的还是pytest.ini里的pythonpath配置,把tests目录直接拉进了搜索路径,才实现了跨子目录的直接导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:03:10