Es gibt einige Python-Code, der unter Linux funktioniert. Es verwendet das PWD-Modul in einer Weise, wie folgt aus:Wie Schatten Python Builttin Pwd Modul
import pwd
...
def func():
user=pwd.getpwnam(user)[2]
Jetzt haben wir einen besonderen Bedarf haben diesen Code mit Tests zu decken, und Tests haben sein runnable unter Windows. Das Programm selbst soll nur unter Linux laufen. Das Problem ist, dass das Modul pwd unter Windows nicht verfügbar ist, daher schlägt der getestete Code mit ImportError fehl, auch wenn die Implementierung von pwd-Funktionen mit MagicMock gespottet wird.
Die Grundidee, dieses Problem zu lösen, bestand darin, das pwd-Modul beim Ausführen von Tests zu spiegeln. Wenn also Tests ausgeführt werden, überschreibt der Stub pwd und wenn das Hauptprogramm ausgeführt wird, wird original (Unix) pwd verwendet. Wir haben solche Stummel bei Test PYTHONPATH:
# pwd.py
def getpwnam(user):
print("YESSSSSSSS")
Aber es scheint nicht zu einem PWD Modul beschatten, in einem Debugger wir sehen, dass die eingebaute in pwd importiert wird. Ich bin hauptsächlich ein Java-Entwickler, also tut es mir leid, wenn die Art, Dinge zu tun, nicht "pythonisch" ist. Ideen sind willkommen.
Ausgezeichnete Antwort, genau das, was wir brauchen! – Dmitriusan
wie soll man winpwd installieren? Pip hat es nicht indiziert, und eine Google-Suche findet seltsame Dinge. – syonip
Ich habe das gleiche Problem. – Locane