导入模块到测试目录

Import module to test directory

我想从我的测试文件夹导入业务代码。

我使用 python setup.py install 安装了我的代码,它将代码复制到 anaconda 站点包文件夹中。但我想在我的开发中测试我的代码。目录,因为我不想在任何小的更改后不断安装我的代码来测试它。

我正在使用 Anaconda 和 Spyder IDE。

这是我的目录结构:

dev
└── myproject
    ├── setup.py
    ├── myproject
    │   ├── __init__.py
    │   └── myproject.py
    └── test
        ├── __init__.py
        └── test_importprojecthere.py

我是从这里拿来的:Running unittest with typical test directory structure

目前,我只是尝试导入一个函数。

# dev: projectfile.py
def hello():
    print('Hello world!')

这是我调用它的地方。

# dev: test_importprojecthere.py
from myproject.projectfile import hello # Use installed package.
hello()

更多信息:

当您创建 包时,您不想将它们安装到您的site-packages。

不使用

  • python setup.py install

改为使用

  • python setup.py develop 或...
  • pip install -e .

这些命令使用 symlinks 安装您的设置。它不是创建副本,而是链接到您的实际项目。因此,当您修改它时,它会立即在所有地方被修改。

因此,您将不必 update/install 或对 运行 单元测试做任何事情。

-- "但是现在,每次我修改我的包时,所有使用它的东西都可能会崩溃。我不想破坏我的生产代码!"

别担心!这就是我们使用虚拟环境的原因。当你创建一个包时,确保你创建了一个虚拟环境,你可以命名,例如“myproject_dev”。

在开发中。环境。使用 python setup.py develop 以便您可以在其上进行开发。

在产品中。环境。使用python setup.py install,让你使用一个副本,即不会突然改变。您不会修改它,因为在生产环境中,您使用的是您的包,而不是在其上进行开发!使事情简单安全。