我有以下课程目录:
project_directory/
....__init__.py
....class_file.py
....logger_folder/
....unittest_folder/
.........class_file_test.py
我在class_file.py中定义了一个类,我想从unittest_folder中的class_file_test.py中对其进行测试。 class_file.py包含一个记录器,定义如下:
import logging
logging.basicConfig(level=logging.INFO,
filename='./logger_folder/class_file.log')
logger = logging.getLogger('my_logger')
要从unittest文件夹中测试class_file,我在class_file_test.py中使用以下代码导入了class_file:
import sys
sys.path.append('..')
from class_file import MyClass
运行此代码时,出现以下错误:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\project_folder\\unittest_folder\\logger_folder\\class_file.log'
因此,很明显,单元测试导入了class_file代码,然后使用了“”。我用来定义记录器相对于其自身路径的文件名。在这样的文件结构中处理目录的正确方法是什么?
答案 0 :(得分:1)
问题是您的目录设置。当前您正在使用当前工作目录的相对路径。实际上,您应该使用该文件目录的绝对路径或相对路径。
from os.path import join, dirname, abspath
print(join(dirname(abspath(__file__)), "file.log"))