我有一些有趣的菜鸟问题。
我尝试从命令行运行单元测试:
H:\PRO\pyEstimator>python src\test\python\test_power_estimator.py
Traceback (most recent call last):
File "src\test\python\test_power_estimator.py", line 2, in <module>
import src.main.python.power_estimator as power
ImportError: No module named src.main.python.power_estimator
当我尝试在所需的文件夹中运行它时会发生这种情况:
H:\ PRO \ pyEstimator \ SRC \测试\蟒&GT;蟒 test_power_estimator.py
我的文件夹结构如下所示。
├───src
│ │ __init__.py
│ │ __init__.pyc
│ │
│ ├───main
│ │ │ __init__.py
│ │ │ __init__.pyc
│ │ │
│ │ └───python
│ │ │ __init__.py
│ │ │ power_estimator.py
│ │ │ __init__.pyc
│ │ │ power_estimator.pyc
│ │ │
│ │ └───GUI
│ │ __init__.py
│ │
│ └───test
│ │ __init__.py
│ │
│ └───python
│ test_power_estimator.py
│ __init__.py
│ covrunner.bat
│ .coverage
│
└───doc
也许我没有看到明显的东西。 我也试着报道。 这种方法是否合适(文件结构)?
答案 0 :(得分:1)
你面临的直接问题是误解了Python中的“本地代码”(我不确定是否有官方术语,所以我正在制作这个术语)以及如何导入它。
运行python src\test\python\test_power_estimator.py
时,sys.path
中的第一个元素设置为包含test_power_estimator.py
脚本的目录,而不是当前目录。因此,语句“import src.main.python.power_estimator as power”会在目录src
中查找包src/test/python
,但这会失败。
解决此问题的一种方法是将PYTHONPATH环境变量设置为“H:\ PRO \ pyEstimator”
但推荐的运行测试方法是使用测试运行器脚本。我建议使用nosetest。
此外,nosetest支持在运行测试时收集覆盖率数据。
此外,有一个名为“src”的python包听起来是个坏主意。您应该将包重命名为您的项目。也许是“estimator”或“pyestimator”(请小写)。