从tests目录

时间:2017-09-11 14:41:31

标签: python pytest

我的项目目录结构如下。当我从package 1运行脚本时,它会在logs目录中创建日志,但是当我从测试运行时它无法提交。

 /project
      __init__.py
     /flask_app
       __init__.py
       /scripts
         __init__.py
         logging.config.py
            /package1
              __init__.py
               mypython.py
            /logs
              logging.log
        /tests
          __init__.py
          test_mypython.py

mypython.py代码:

 self.logger = configure_logger('log_handler','../logs/logging.py')

当我通过发出命令

从测试运行mypython.py时
   py.test

我得到的回应是

   [Errno 2] No such file or directory:
   /home/mac/project/flask_app/logs/logging.log

当它试图从测试目录中找到路径时,这显然是错误的

到目前为止,我已尝试使用

(mypython.py)
log_file = pkg_resource.resource_filename(__name__, '../logs/logging.log')
self.logger = configure_logger('log_handler',log_file)

我也试过

package_dir = os.path.dirname(os.path.abspath(__file__))
log_file=os.path.join(os.path.dirname(__file__),'../logs/logging.log')

它们似乎都不起作用。如果我将目录更改为mypackage1然后运行py.test,那么一切正常。我不希望这样,因为我在测试目录中有其他单元测试。我现在很沮丧。感谢是否有人可以指出我的代码有什么问题。我认为包资源应该解决。显然它没有。提前致谢

1 个答案:

答案 0 :(得分:1)

使用与模块相关的路径配置日志记录(no到当前目录):

self.logger = configure_logger('log_handler', os.path.dirname(__file__) + '/../logs/logging.py')
在使用相对路径配置日志记录之前

或创建logs目录:

try:
    os.mkdir('../logs')
except OSError:  # Exists
    pass
self.logger = configure_logger('log_handler','../logs/logging.py')