리눅스에서 작동하는 파이썬 코드가 있습니다. 그림자 파이썬 내장 pwd 모듈
import pwd
...
def func():
user=pwd.getpwnam(user)[2]
이제 우리는 시험이 코드를 충당하기 위해 특정 필요가 있고, 테스트는 Windows에서 실행 가능한 있어야합니다 : 그것은 그런 방법으로 PWD 모듈을 사용합니다. 프로그램 자체는 Linux에서만 실행됩니다. 문제는 Windows에서 pwd 모듈을 사용할 수 없기 때문에 pwd 함수 구현이 MagicMock을 사용하여 조롱 된 경우에도 테스트중인 코드가 ImportError와 함께 실패합니다.
이 문제를 해결하기위한 기본적인 아이디어는 테스트를 실행할 때 pwd 모듈을 섀도 잉하는 것이 었습니다. 따라서 테스트를 실행할 때 스텁은 pwd를 섀도 잉하고 메인 프로그램을 실행할 때 원본 (Unix) pwd가 사용됩니다. 우리는 시험 PYTHONPATH에 같은 스텁을 생성 :
# pwd.py
def getpwnam(user):
print("YESSSSSSSS")
그러나 우리가 내장 된 PWD하는 것은 가져 볼 디버거에서는, PWD 모듈을 그림자하지 않는 것 같습니다. 나는 주로 자바 개발자이기 때문에 일을하는 방식이 "파이썬"이 아니라면 미안합니다. 아이디어를 환영합니다.
우수 답변, 단지 우리가 필요로하는 것! – Dmitriusan
winpwd를 어떻게 설치해야합니까? pip에는 색인이 생성되지 않으며 Google 검색은 이상한 것을 찾습니다. – syonip
동일한 문제가 있습니다. – Locane