我正在使用VSCODE作为我的编辑器,使用Python 3.7版本。
我的文件夹结构如下:
我希望从util文件夹中导入drivers.py到driver_test.py中。 我尝试了基本的导入,如下所示:
project
|-- util
| -- drivers.py
| -- data.py
| -- __init__.py
|-- test
| -- driver_test.py
| -- __init__.py
main.py
我希望从util文件夹中导入drivers.py到driver_test.py中。 我尝试了基本的导入,如下所示:
from util.drivers import Driver
由于找不到util
模块,第一种方法并没有生效,所以我采用了另一种方式,在sys.path
中添加一个文件夹。像这样:
# driver_test.py
sys.path.append(os.path.abspath('./util'))
import drivers
我对几个输出错误感到非常困惑。 当我从控制台运行我的单元测试时,我会收到找不到驱动程序的错误。
import drivers
ModuleNotFoundError: No module named 'drivers'
如果我在 VSCode 编辑器中右键运行测试文件 Run current test file
,则错误输出与包含在 drivers.py
文件中的 Selenium 驱动程序未找到有所不同。
from selenium import webdriver
ModuleNotFoundError: No module named 'selenium'
Selenium模块实际上运行良好,我只是想为它编写一些单元测试。我做错了什么,这该如何解决?是否可以通过使用import而不是sys.path
来包含一个模块。
__init__.py
添加到测试文件夹并没有起作用,我是通过在 vscode 中右键单击运行我的测试,并尝试通过控制台运行。 - Andrewsys.path
,则不要将包添加到其中,而是添加包含包的目录。在您的情况下,我认为sys.path.append(os.path.abspath('.'))
已经足够了,但更健壮的方法是相对于__file__
属性计算路径。例如,sys.path.append(os.path.abspath(os.path.join(__file__, os.pardir)))
- 这样路径就不会因为从另一个目录运行测试等原因而改变。 - hoefling