我在python中创建一个与此类似的目录结构:
module_root
├── __init__.py
├── module_a
│ ├── __init__.py
│ ├── local_module_a.py
│ └── tests
│ ├── context.py
│ └── test_local_module_a.py
├── module_b
│ └── tests
│ └── context.py
├── tests
│ ├── context.py
│ └── test_this_module_will_be_exported.py
├── this_module_will_be_exported.py
└── this_module_will_not_be_exported.py
每个模块都有自己的测试文件夹和测试。一旦Python不在文件调用import
之上的目录中搜索模块,每个测试目录都有一个名为context.py
的文件,类似于:
import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from this_module_will_be_exported import ThisClassWillBeExported
然后,在每个测试文件中,我使用以下import语句:
from context import ThisClassWillBeExported
当我只有一个test
目录和一个context.py
时,一切正常,但是当我添加更多测试时(如上面的目录树中所述),pytest
执行会返回以下错误
ImportError while importing test module 'path/to/module_root/tests/test_this_module_will_be_exported.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
module_root/tests/test_this_module_will_be_exported.py:1: in <module>
from context import ThisClassWillBeExported
E ImportError: cannot import name 'ThisClassWillBeExported'
当我将module_root/module_a/tests/context.py
的名称更改为module_root/module_a/tests/_context.py
时(例如),测试效果很好。所以我知道我可以简单地将所有context.py
更改为不同的名称,但我希望保留其名称以避免更多工作。
所以我需要社区的帮助,有办法保留context.py
名称并解决这个问题吗?
感谢。 :)
答案 0 :(得分:0)
首先,您只需将根目录添加到 driver.manage().window().maximize();
而不是所有上下文文件。
其次,如果要从同一文件夹导入上下文文件,请尝试使用相对路径。
PYTHONPATH
第三,确保所有上下文文件都包含您要导入的变量。