subprocess.Popen()
을 사용하여 스크립트를 호출하는 응용 프로그램을 테스트하려면 nose을 사용하고 있습니다. capture 또는 logcapture 플러그인은이 스크립트의 출력을 캡처하지 않는 것 같습니다. 이 출력물을 코에 파이프하는 쉬운 방법이 있습니까?subprocess.Popen() with nose의 출력 캡처
여기 제가 지금까지 시도한 바 있습니다. 주의 "저를 캡처"캡처되지 않습니다
example.py :
if __name__ == '__main__':
print 'Capture me'
test.py :
import subprocess
import sys
def test_popen():
# nose's capture plugin replaces sys.stdout with a StringIO instance.
# subprocess.Popen() expects stdout to have a fileno property, which
# StringIO doesn't, so fake it.
sys.stdout.fileno = lambda: 1
subprocess.Popen(['python', 'example.py'], stdout=sys.stdout)
assert False # Force test to fail so we see nose output
출력 :
$ nosetests test.py
F
======================================================================
FAIL: test.test_popen
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/pmdarrow/Envs/example/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
self.test(*self.arg)
File "/Users/pmdarrow/Code/example/API/test.py", line 8, in test_popen
assert False
AssertionError
----------------------------------------------------------------------
Ran 1 test in 0.004s
FAILED (failures=1)
Capture me
왜'stdout' 매개 변수를'sys.stdout'에 보내는 이유는 무엇입니까? 당신은없이 시도 했습니까? – Wolph
'Popen()'이 출력물을 코에 보내도록하려는 시도였습니다. 그것없이 출력은 똑같습니다. – pmdarrow
출력을 찾고 있다면,'subprocess.check_output()'을 시도하십시오. –