Robot Framework无法识别Enum类模块的技术求助
Robot Framework Web自动化模块识别问题
项目结构
src/ ├── Enum/ │ └── FakerMethod.py ├── PageObjectModel/ │ ├── PageObject/ │ │ └── ApplyLoan.py │ ├── Resources/ │ │ ├── Common.robot │ │ └── ApplyLoan.robot │ └── TestCases/ │ └── symple_loans_quote_creation.robot └── CustomLib/ ├── CommonLib.py └── FakerLib.py
测试用例配置(symple_loans_quote_creation.robot)
*** Settings *** Library SeleniumLibrary Library ../../CustomLib/CommonLib.py Library ../../CustomLib/FakerLib.py ...
报错信息
Importing test library 'src/CustomLib/FakerLib.py' failed: ModuleNotFoundError: No module named 'FakerMethod' Traceback (most recent call last): File "src/CustomLib/FakerLib.py", line 3, in <module> import FakerMethod
FakerLib.py导入语句
import logging import faker import FakerMethod #Present inside src/Enum
FakerMethod.py内容
from enum import Enum class FakerMethod(Enum): """ This is an enum which should be used with ../CustomLib/FakerLib.py """ ABA = 'aba' ADD_PROVIDER = 'add_provider' ...
已尝试但无效的方法
- 使用相对导入:
import ..Enum.FakerMethod - 使用相对导入:
from ..Enum import FakerMethod - 将
src/Enum添加到系统路径
解决方案
方法1:动态添加src路径到Python环境
修改FakerLib.py,通过代码获取src目录的绝对路径并加入sys.path,再使用绝对导入:
import logging import faker import sys from pathlib import Path # 从FakerLib.py所在位置向上两级找到src目录 src_dir = Path(__file__).resolve().parent.parent sys.path.append(str(src_dir)) from Enum.FakerMethod import FakerMethod
方法2:通过环境变量指定PYTHONPATH
运行测试前,将src目录加入PYTHONPATH,确保Python能识别到Enum模块:
- Windows系统:
set PYTHONPATH=你的项目路径\src robot src/PageObjectModel/TestCases/symple_loans_quote_creation.robot
- Linux/macOS系统:
export PYTHONPATH=/你的项目路径/src robot src/PageObjectModel/TestCases/symple_loans_quote_creation.robot
之后修改FakerLib.py的导入语句为:
import logging import faker from Enum.FakerMethod import FakerMethod
方法3:将src转为Python包
在src、Enum、CustomLib三个目录下分别创建空的__init__.py文件,将整个src目录转为Python包,然后修改FakerLib.py的导入语句:
import logging import faker from src.Enum.FakerMethod import FakerMethod
运行测试时,确保工作目录处于src的上级目录,或者提前将src加入PYTHONPATH。
内容的提问来源于stack exchange,提问作者vivek
相关产品推荐
相关产品推荐

