Python / Pytest - 在文件中导入模块,与您在目录中的位置无关?

时间:2018-05-20 05:11:54

标签: python pytest

我正在尝试使用我的项目设置pytest,目录结构如下所示。

├── 
├── README.md
├── my_code
│   ├── __init__.py
│   ├── __main__.py
│   └── target_file.py
└── tests
│   ├── __init__.py
│   └── test_one.py

在我的test_one.py中,我正在使用

导入target_file.py
import sys
import os
sys.path.insert(0, "my_code")

如果我从根目录中的命令行运行pytest,这是有效的。但是,如果我cd进入另一个目录,例如进入tests,我会收到一条错误消息,指出模块my_code没有属性bla bla bla。我认为这是因为我导入的方式,这取决于我实际在目录中的位置。因此,如果我在tests目录中,那么它将尝试从不存在的/root/tests/my_code导入。有没有办法将target_file.py导入test_one.py,这样无论我在哪里,我都可以在命令行上运行pytest,以便运行我的测试?现在,我必须转到根目录,以便导入正常工作。

1 个答案:

答案 0 :(得分:1)

将项目主目录的完整路径添加到sys.path,而不仅是相对路径。 在linux下,这从/包含自述文件

的目录开始