C'è del codice Python che funziona sotto Linux. Esso utilizza il modulo pwd in un modo simile:Come shadow python builtin pwd module
import pwd
...
def func():
user=pwd.getpwnam(user)[2]
Ora abbiamo un bisogno specifico per coprire questo codice con i test e le prove devono essere eseguibile in ambiente Windows. Il programma stesso è destinato a funzionare solo su Linux. Il problema è che il modulo pwd non è disponibile in Windows, quindi il codice in prova fallirà con ImportError, anche se l'implementazione delle funzioni pwd viene derisa usando MagicMock.
L'idea di base per risolvere questo problema era quella di ombreggiare il modulo pwd durante l'esecuzione dei test. Quindi, durante l'esecuzione dei test, lo stub ombreggia pwd e durante l'esecuzione del programma principale, verrà utilizzato il pwd originale (Unix). Abbiamo creato tale stub a prova di PYTHONPATH:
# pwd.py
def getpwnam(user):
print("YESSSSSSSS")
Ma non sembra ombra di un modulo pwd, in un debugger vediamo che il built-in pwd è importato. Sono principalmente uno sviluppatore Java, quindi mi dispiace se il modo di fare le cose non è "pythonic". Le idee sono ben accette
Risposta eccellente, proprio quello di cui abbiamo bisogno! – Dmitriusan
come dovresti installare winpwd? pip non ha indicizzato, e una ricerca su google trova cose strane. – syonip
Sto avendo lo stesso problema. – Locane