1

我有一些有趣的菜鸟问题。

我尝试从命令行运行单元测试:

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\test\python>python 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

也许我没有看到明显的东西。我也尝试进行报道。这种方法好吗(文件结构)?

4

1 回答 1

1

您面临的直接问题是对 Python 中的“本地代码”是什么(我不确定是否有官方术语,所以我正在编造这个)以及如何导入它的误解。

运行时python src\test\python\test_power_estimator.py,第一个元素sys.path设置为包含test_power_estimator.py脚本的目录,而不是当前目录。src所以语句“import src.main.python.power_estimator as power”在目录中查找包,但src/test/python失败了。

解决此问题的一种方法是将 PYTHONPATH 环境变量设置为“H:\PRO\pyEstimator”

但推荐的运行测试方法是使用测试运行器脚本。我推荐使用nosetest

此外,nosetest 支持在运行测试时收集覆盖率数据。

此外,拥有一个名为“src”的python包听起来是个坏主意。您应该将您的包重命名为您的项目。也许是“estimator”或“pyestimator”(请小写)。

于 2009-11-14T11:54:57.817 回答