我正在尝试使用 pytest/testinfra 构建测试系统,并且我使用 Python 的相对导入将设置从测试移动到单独的文件(settings.py
或__init__.py
)中。所有测试看起来都相似:
from . import *
def test_port(host):
assert host.socket(f"tcp://127.0.0.1:{ PORT }").is_listening
问题是,如果这个带有测试的目录(名称由应用程序名称决定)包含破折号(fe app-foo
),python 会失败:
from . import *
E ImportError: attempted relative import with no known parent package
如果我将目录重命名app-foo
为app_foo
它可以工作。但我真的不想这样做,因为名称来自外部系统,重命名非常不受欢迎。
有什么办法可以说 python 为带有破折号的目录导入本地文件?
PS我尝试过使用from .settings import *
,但它是一样的。我尝试使用from settings import *
,但如果我使用../../tests
路径运行测试它会失败。