Ich möchte Code testen, der sich als Client mit einem FTP-Server verbindet und Dateien hoch- und herunterlädt.
Gibt es eine Python-Bibliothek, die einen Kontextmanager bereitstellt, der einen FTP-Server auf localhost (Port 2121) ausführt?
Ich möchte, dass die Verwendung dieser Bibliothek ungefähr so aussieht:
def test_my_ftp_foo(self):
with ftp_server_context(user='myuser', password='mypassword', port=2121):
with ftputil.FTPHost(host='localhost', 'myuser', 'mypassword', port=2121) as host:
host.makedirs('a/b')
host.chrdir(...')
...
Ich sehe mehrere Möglichkeiten, diese Bibliothek zu implementieren.
Eine wäre, subprocess.Popen() zu verwenden und ein Skript mit pyftpdlib auszuführen, bis __exit__()
der Kontextmanager angewiesen wird, den FTP-Server zu beenden.
Sie können einen FTP-Server von der Befehlszeile aus starten, indem Sie das verdrehte Python-Framework verwenden.
Sobald Sie twisted und möglicherweise pywin32 mit pip installiert haben , können Sie einen FTP-Server von der Befehlszeile (oder mit Popen) starten.
Der Befehl zum Starten lautet:
python -m twisted ftp
Sie können Autorisierung, Port, Stammverzeichnis usw. angeben. Beachten Sie, dass dies kein FTP-Server für die Produktion ist
Ich habe eine einfache Bibliothek geschrieben, die das bietet, wonach ich gesucht habe:
https://github.com/tbz-pariv/ftpservercontext
FTP-Server-Kontextmanager zum Testen von FTP-Client-Code
Güttli