如何不修改应用结构且不用绝对路径向pytest测试文件导入目标模块
方案1:修改测试文件动态添加路径(无需修改原有应用代码)
之前的相对路径添加失败是因为sys.path.append("../../")的相对路径是相对于你执行pytest的工作目录,而非test_delta.py文件的存放位置,用__file__动态计算文件所在路径就可以避免这个问题:
在test_delta.py开头添加以下代码:
import sys from pathlib import Path # 计算项目根目录的绝对路径:test_delta.py所在的unitaire目录 → 上一级test目录 → 再上一级就是项目根目录 sys.path.append(str(Path(__file__).parent.parent.parent.resolve())) from jobs_struct.app.job_struct.delta import ApplyDelta
方案2:执行pytest时指定PYTHONPATH(无需修改任何代码)
你已经是在项目根目录执行pytest,只需要在执行命令里临时把当前目录加入Python的模块搜索路径即可:
- Linux/Mac系统执行:
PYTHONPATH=. pytest test/unitaire/test_delta.py
- Windows CMD执行:
set PYTHONPATH=. && pytest test\unitaire\test_delta.py
- Windows PowerShell执行:
$env:PYTHONPATH="."; pytest test\unitaire\test_delta.py
内容的提问来源于stack exchange,提问作者Itération 122442
相关产品推荐
相关产品推荐

