python - python 包和测试的问题

标签 python unit-testing

我有一个这样的目录结构:

project
|  __init__.py
| project.py
| src/
    | __init__.py
    | class_one.py
    | class_two.py
| test/
    | __init__.py
    | test_class_one.py

哪个project.py只是实例化ClassOne并运行它。

我的问题是在测试中,我不知道如何导入 src 类。我尝试过导入这些方式,但什么也没得到:

from project.src.class_one import ClassOne

from ..src.class_one import ClassOne

我做错了什么?有没有更好的目录结构?

-----编辑-----

我改变了我的目录结构,现在是这样的:

Project/
|   project.py
|   project/
    |   __init__.py
    |   class_one.py
    |   class_two.py
    |   test/
        |   __init__.py
        |   test_class_one.py

test_class_one.py 文件中,我尝试以这种方式导入:

from project.class_one import ClassOne

但它仍然不起作用。我没有在 bin 目录中使用可执行的 project.py ,因为我无法从更高级别的目录导入包。 :(

谢谢。 =D

最佳答案

这完全取决于你的 python 路径。实现您想要执行的操作的最简单方法是将 PYTHONPATH 环境变量设置为“project”目录所在的位置。例如,如果您的来源居住在:

/Users/crocidb/src/project/

我愿意:

export PYTHONPATH=/Users/crocidb/src

然后在 test_one.py 中我可以:

import project.src.class_one

实际上我可能会这样做:

export PYTHONPATH=/Users/crocidb/src/project

然后在 test_one.py 中:

import src.class_one

但这只是我的偏好,实际上取决于您的层次结构的其余部分是什么。另请注意,如果 PYTHONPATH 中已有某些内容,您需要添加以下内容:

export PYTHONPATH=/Users/crocidb/src/project:$PYTHONPATH

如果您希望最后搜索项目路径,则可以采用其他顺序。

这也适用于 Windows,只不过您需要使用 Windows 语法来设置环境变量。

关于python - python 包和测试的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3251275/

相关文章:

python - 我可以在 Python 中使用过滤器获取函数列表吗?

python - 通过excel使用python从bloomberg api获取数据

unit-testing - 依赖注入(inject)、单元测试和信息隐藏

c# - 如何解读 SonarQube 的成果

python - Pandas - 寻找转折点

python - 一维数组的形状给出 'tuple' 对象不可调用?

python - Django 中什么时候需要重启数据库服务器?

python - 在 python 中运行 xmlrunner 时没有打印到标准输出

java - 在单元测试中使用 SpringRunner 可以吗?

objective-c - OCUnit 测试 Objective-C 中的协议(protocol)/回调/委托(delegate)