2017-07-22 4 views
0

Ich erstelle eine Datei-Downloader-API in Python. Die API kann Dateien von einem Host mit FTP oder SFTP herunterladen (ich habe separate Klassen für beide implementiert) und sollte auch bereits heruntergeladene Dateien in Form einer CSV-Datei, einer Datenbanktabelle oder einer Excel-Datei verfolgen (die ich implementiert habe) separate Klassen für alle). Ich habe einige grundlegende Implementierungen durchgeführt und möchte nun alle meine Methoden testen (weil ich nicht wirklich Dateien von einem echten Host herunterladen und auf meinem Rechner speichern möchte, sondern nur sicherstellen will, dass es so funktioniert, wie es soll Arbeit). Es fällt mir schwer, einen guten Ausgangspunkt für Unit-Tests zu finden, speziell um den Datei-Handling-Part und die FTP-, SFTP-Downloader-Methoden zu testen. Mein vollständiger Code kann hier gefunden werden https://ghostbin.com/paste/o8jxkMock Unit Testdatei lesen und schreiben in Python 2.7

Jede Hilfe oder nützliche Lernquellen werden geschätzt.

Der Code für Datei lesen Schreibklasse

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

Verwenden Sie Mock über FTP-Methode und Mock-Methode zurückgeben Dummy-Dateinamen, wenn die Testdatei sonst keine heruntergeladen – Kallz

Antwort

0

Sie auf jeden Fall in mock suchen müssen, die Teil der Standard-Python-Bibliothek in Python 3+ ist. mock_open ist besonders nützlich zum Ausspionieren von Dateien einschließlich Lesen und Schreiben von Inhalten und die Python-Dokumentation hat viele nützliche Beispiele.

Auch wenn Sie Python 2.7 Mock verwenden wird kompatibel sein nach hinten, so dass Sie

0

mock installieren pip Lage sein sollte, die ich getestet es https://pythonhosted.org/testfixtures/files.html mit Prüfvorrichtungen. Hier ist mein 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'))