2017-09-11 1 views
0

Ma structure de répertoire de projet est la suivante. Lorsque j'exécute le script à partir de package 1, il crée des journaux dans le répertoire logs mais lorsque je lance des tests, il ne peut pas être enregistré.Fichier de journalisation introuvable lors de l'exécution du répertoire de tests

/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 Code:

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

Quand je courais le mypython.py des tests par émission d'une commande

py.test 

Tout ce que je reçois la réponse est

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

qui est clairement w rong comme il essaie de trouver des tests chemin répertoire

Jusqu'à présent, j'ai essayé (mypython.py) en utilisant

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

J'ai aussi essayé

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

Aucun d'entre eux ne semble fonctionner. Si je change mon répertoire en mypackage1 puis exécute py.test alors tout fonctionne. Je ne le veux pas car j'ai d'autres tests unitaires dans le répertoire des tests. Je suis très frustré maintenant. Appréciez si quelqu'un peut signaler ce qui ne va pas avec mon code. Je pensais que la ressource de package devrait résoudre. il est clair que non. Merci à l'avance

Répondre

0

Soit configurer la connexion avec le chemin lié au module (pas dans le répertoire courant):

self.logger = configure_logger('log_handler', os.path.dirname(__file__) + '/../logs/logging.py') 

ou créer logs répertoire avant de configurer la connexion avec un chemin relatif:

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

En fait, le problème a été résolu. en utilisant 'os.path.dirname (__ nom de fichier __), '.../log/logging.log)'. C'était l'un des fichiers où il ne l'avait pas mis à jour. Merci. J'ai incorporé votre suggestion de créer le fichier de logs qui manquait. –