Python引用framework目录模块时出现ModuleNotFoundError的解决办法咨询
Python引用framework目录模块时出现ModuleNotFoundError的解决办法咨询
你遇到的这个问题我之前做项目时也踩过坑,本质就是Python解释器找不到framework模块的所在路径,下面给你几个实用的解决办法,你可以根据自己的情况选:
方法1:在测试文件里手动添加项目根目录到Python路径
直接在test_myunittest.py的最开头加上这段代码,把项目根目录(也就是C:\automation)加入到Python的搜索路径中:
import sys from pathlib import Path # 自动获取项目根目录,不用硬编码路径 project_root = Path(__file__).parent.parent.parent sys.path.append(str(project_root)) # 然后再正常导入 import pytest from framework import constants
这样不管你在哪里运行这个测试文件,Python都能定位到framework目录。
方法2:切换到项目根目录再运行pytest
不用改任何代码,打开命令行,先切换到C:\automation目录,再运行pytest命令:
cd C:\automation pytest tests/unit-tests/test_myunittest.py
Python会自动把当前工作目录(也就是项目根目录)加入到模块搜索路径里,自然就能找到framework模块了。
方法3:设置PYTHONPATH环境变量
你可以临时或者永久把项目根目录加到系统的PYTHONPATH环境变量中:
- 临时生效(仅当前命令行窗口):在Windows命令行输入
之后再运行pytest就没问题了。set PYTHONPATH=C:\automation - 永久生效:打开Windows的系统环境变量设置,新增一个
PYTHONPATH变量,值设为C:\automation,这样每次打开命令行都能直接找到这个路径。
方法4:相对导入(不推荐)
这个方法局限性比较大,仅作参考。你可以把导入语句改成相对路径的形式:
from ...framework import constants
但要注意,这种方式只能把测试文件当作包的一部分来运行,比如必须从项目根目录用python -m pytest tests/unit-tests/test_myunittest.py来执行,直接双击运行测试文件会报错,所以一般不推荐用这个方法。
为啥会出现这个错误?
简单说就是你运行pytest的时候,Python的模块搜索路径里没有包含framework所在的C:\automation目录,所以它找不到这个模块。只要让Python能定位到项目根目录,问题就解决啦。
备注:内容来源于stack exchange,提问作者bearaman
相关产品推荐
相关产品推荐

