2017-07-22 3 views
0

Je crée une API de téléchargement de fichiers en Python. L'API sera capable de télécharger des fichiers depuis un hôte en utilisant FTP ou SFTP (j'ai implémenté des classes séparées pour les deux) et de garder trace des fichiers déjà téléchargés sous la forme d'un fichier CSV, d'une table de base de données ou d'un fichier Excel classes séparées pour tous). J'ai fait quelques implémentations de base et maintenant je veux tester toutes mes méthodes (parce que je ne veux pas télécharger les fichiers d'un hôte réel et économiser sur ma machine mais je veux juste m'assurer que ça fonctionne comme prévu travail). J'ai du mal à trouver un bon point de départ pour les tests unitaires, spécialement pour tester la partie manipulation de fichiers et les méthodes de téléchargement FTP, SFTP. Mon code complet peut être trouvé ici https://ghostbin.com/paste/o8jxkFoire aux tests de fichiers unitaires lire et écrire en python 2.7

Toute aide ou source d'apprentissage utile sera appréciée.

Le code pour le fichier lu classe d'écriture

class CSVManager(DownloadManager): 

     def __init__(self, file_path, csv_file): 
    self.path = os.path.join(file_path, csv_file) 

def register_download(self, file_name): 
    files = file_name 
    with open(self.path, "wb") as csv_file: 
     writer = csv.writer(csv_file, delimiter=',') 
     for file in files: 
      writer.writerow(file) 

def downloaded(self): 
    downloaded_files = [] 
    with open(self.path, "rb") as csv_file: 
     reader = csv.reader(csv_file) 
     for file in reader: 
      downloaded_files.append(file) 
    return downloaded_files 
+0

Utilisation de la méthode FTP et de la méthode Faux retour du nom de fichier fictif si le fichier de test est téléchargé – Kallz

Répondre

0

Vous avez certainement besoin de regarder dans mock qui fait partie de la bibliothèque standard de Python en Python 3+. mock_open est particulièrement utile pour railler des fichiers, y compris la lecture et l'écriture de contenu et la documentation Python a beaucoup d'exemples utiles.

Même si vous utilisez Python 2.7 maquette est fait pour être rétrocompatible donc vous devriez être en mesure de pépin installer maquette

0

Je l'ai testé à l'aide des appareils de test https://pythonhosted.org/testfixtures/files.html. Voici mon code:

def test_CSVManager_register_download_and_downloaded_methods(self): 
    with TempDirectory() as d: 
     myList = ['test', 'test1', 'test2'] 
     d.write('test.csv', 'test') 
     csvManager = CSVManager(d.path, 'test.csv') 
     csvManager.register_download(myList) 
     print(csvManager.downloaded()) 
     print(d.read('test.csv'))