从兄弟目录导入模块以与py.test一起使用

时间:2016-05-26 19:28:34

标签: python python-3.x python-import importerror pytest

我无法将任何内容导入到我打算使用py.test运行的测试文件中。

我的项目结构如下:

/ProjectName
|
|-- /Title
|    |-- file1.py
|    |-- file2.py
|    |-- file3.py
|    |-- __init__.py
|
|-- /test
|    |-- test_file1.py

我无法在test_file1.py文件中使用pytest获取任何import语句,因此我目前只是尝试使用file_1.py中声明的变量并在{{1}时将其打印出来运行。

file1.py包含:

test_file1.py

test_file1.py包含:

file1_variable = "Hello"

我的测试文件中的import语句来自https://stackoverflow.com/a/10272919/5477580,它通过编辑PYTHONPATH变量来工作。这允许我运行import sys import os sys.path.append(os.path.abspath('../Title')) import file1 def test_something(): assert file1.file1_variable == "Hello" print(file1.file1_variable) 脚本并成功执行test_file1.py语句。

但是,尝试从print目录运行py.test会出现错误/ProjectName

有没有什么方法可以让我更好地构建事物,以便pytest可以实现?我是否需要在ImportError: No module named 'file1'文件中添加内容?

1 个答案:

答案 0 :(得分:3)

不,您不需要向__init__.py添加任何内容。该文件告诉python将父目录视为可以导入为described here的模块。 只需将其添加到您的Title目录并将其导入为

from ..Tiltle.file import file1_variable

这里我们在目录中移动1层次,就像cd ..

一样

注意..用于从测试目录中访问标题包。如果您需要从 ProjectName 目录运行文件,则必须执行

from Tiltle.file import file1_variable