gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:20 27 4
gpt4 key购买 nike

我在将任何我打算使用 py.test 运行的测试文件导入时遇到问题。

我的项目结构如下:

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

我无法在 test_file1.py 文件中获取任何与 pytest 一起使用的导入语句,因此目前我只是尝试使用在 file_1.py 中声明的变量code> 并在 test_file1.py 运行时打印出来。

file1.py 包含:

file1_variable = "Hello"

test_file1.py 包含:

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)

我的测试文件中的导入语句取自 https://stackoverflow.com/a/10272919/5477580它通过编辑 PYTHONPATH 变量来工作。这允许我运行 test_file1.py 脚本并成功执行 print 语句。

但是,尝试从 /ProjectName 目录运行 py.test 时出现错误,显示 ImportError: No module named 'file1'

有没有什么方法可以让我更好地构建事物,从而使 pytest 成为可能?我是否需要向我的 __init__.py 文件中添加一些内容?

最佳答案

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

from ..Tiltle.file import file1_variable

这里我们在目录中向上移动 1 个层次结构,就像 cd ..

注意 .. 用于从 test 目录到达 Title 包。如果您需要从 ProjectName 目录运行您的文件,您将必须这样做

from Tiltle.file import file1_variable

关于python - 从兄弟目录导入模块以与 py.test 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37469473/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com