Python: Lib, die FTP-Server auf localhost im ContextManager bereitstellt

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.

Antworten (2)

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