运行Pytest时出现No Module named 'api'错误,求解决方法
解决Pytest报"No Module named 'api'"的实用方案
1. 规范项目结构,确保api被识别为模块
你的项目需要符合Python包的基本结构,api文件夹必须包含__init__.py文件(空文件也可以),示例结构如下:
你的项目根目录/ ├── api/ │ ├── __init__.py │ └── 你的业务代码文件.py ├── tests/ │ ├── test_api.py │ └── 其他测试文件.py
没有__init__.py的话,Python不会把这个文件夹当作可导入的模块。
2. 把项目根目录加入Python搜索路径
方法一:通过pytest配置文件永久设置
在项目根目录创建pytest.ini文件,写入以下内容:
[pytest] pythonpath = .
这样pytest运行时会自动把根目录加入Python的模块搜索路径。
方法二:在测试文件中临时添加路径
如果不想用配置文件,可以在测试文件开头添加这段代码(根据你的测试文件位置调整层级):
import sys from pathlib import Path # 假设测试文件在tests文件夹,根目录是它的上级目录 sys.path.append(str(Path(__file__).parent.parent))
3. 用正确的命令运行pytest
不要在tests文件夹内部直接执行pytest,回到项目根目录再运行命令:
cd /你的项目根目录路径 pytest tests/
4. 检查虚拟环境(如果使用)
如果你用了虚拟环境,确保已经激活该环境,并且pytest和相关依赖都安装在这个虚拟环境中,避免全局环境和虚拟环境的模块路径混淆。
内容的提问来源于stack exchange,提问作者Diego Rafael
相关产品推荐
相关产品推荐

