2017-07-22 102 views
0

我正在Python中創建一個文件下載API。 API將能夠使用FTP或SFTP從主機上下載文件(我已經爲兩者實現了單獨的類),並且還應該以CSV文件,數據庫表或Excel文件的形式跟蹤已下載的文件(我已經實施爲所有人分班)。我已經做了一些基本的實現,現在我想單元測試我所有的方法(因爲我不想真的從真實的主機下載文件並保存在我的機器上,但只是想確保它按照它應該的方式工作工作)。我很難爲單元測試找到一個好的起點,特別是單元測試文件處理部分和FTP,SFTP下載器方法。我的完整代碼可以在這裏找到 https://ghostbin.com/paste/o8jxk模擬單元測試文件讀取和寫入蟒蛇2.7

任何幫助或有用的學習資源將不勝感激。

文件的代碼讀寫類

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

使用模擬FTP方法和模擬方法如果測試文件下載返回虛擬文件名否則無 – Kallz

回答

0

你一定要看看mock這是在Python標準Python庫3+的一部分。 mock_open對嘲笑包括讀寫內容的文件特別有用,Python文檔中有很多有用的示例。

即使您使用Python 2.7模擬被製成向後兼容,所以你應該能夠點子安裝模擬

0

我測試了使用測試夾具https://pythonhosted.org/testfixtures/files.html。這裏是我的代碼:

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'))