2016-12-20 1 views
0

J'ai le code suivant dans un fichier que je suis en train de tester. Il vérifie si WindowsError n'existe pas et le redéfinit en tant que sous-classe de OSError. Lors du débogage de mon application avec pdb, WindowsError n'est pas disponible en tant que builtin, donc l'instruction if renvoie true même sur les ordinateurs Windows.WindowsError builtin n'existe pas lors de l'utilisation de pdb

Comment devrais-je tester ce fichier avec pdb?

if not getattr(__builtins__, "WindowsError", None): 
    class WindowsError(OSError): pass 
class TestCases(unittest.TestCase) 
    def test_removefile(self): 
     try: 
      os.remove(fd.filePath) 
     except WindowsError as e: 
      if e.errno == 2: pass 
      else: 
       raise e 
if __name__ == '__main__': 
    unittest.main() 

Répondre

0

Ce bloc de code fonctionne à l'intérieur du débogueur Python et lors de l'exécution normale:

import exceptions 

if not getattr(exceptions, "WindowsError", None): 
     class WindowsError(OSError): pass 

Cette solution fonctionne et permet également d'éviter littéraux de chaîne et une importation de la bibliothèque complète des exceptions:

try: 
    from exceptions import WindowsError 
except ImportError: 
    class WindowsError(OSError): pass