मुझे नहीं पता कि मुझे यह क्यों नहीं मिल रहा है, लेकिन मैं पाइथन में नकली का उपयोग करना चाहता हूं ताकि यह जांच सके कि मेरे फ़ंक्शन ftplib.FTP में फ़ंक्शंस को कॉल कर रहे हैं। मैंने सबकुछ नीचे सरलीकृत कर दिया है और अभी भी मेरे सिर को लपेट नहीं रहा है कि यह कैसे काम करता है। यहाँ एक सरल उदाहरण है:यूनिट परीक्षण के लिए ftplib.FTP मॉकिंग पायथन कोड
import unittest
import ftplib
from unittest.mock import patch
def download_file(hostname, file_path, file_name):
ftp = ftplib.FTP(hostname)
ftp.login()
ftp.cwd(file_path)
class TestDownloader(unittest.TestCase):
@patch('ftplib.FTP')
def test_download_file(self, mock_ftp):
download_file('ftp.server.local', 'pub/files', 'wanted_file.txt')
mock_ftp.cwd.assert_called_with('pub/files')
जब मैं इस चलाने के लिए, मैं:
AssertionError: Expected call: cwd('pub/files')
Not called
मैं जानता हूँ कि यह नकली वस्तु का उपयोग कर के बाद से है कि एक नकली सर्वर नाम है होना चाहिए, और जब पैचिंग के बिना चला , यह एक "socket.gaierror" अपवाद फेंकता है।
मैं वास्तविक वस्तु को कैसे चला सकता हूं? दीर्घकालिक लक्ष्य में एक ही फ़ाइल में "download_file" फ़ंक्शन नहीं है, लेकिन इसे एक अलग मॉड्यूल फ़ाइल से कॉल करना है।