18 Kasım 2010, PERŞEMBE
Nasıl çıkış savunmak için python nosetest/unittest ile?
Bir sonraki fonksiyon testleri yazıyorum:
def foo():
print 'hello world!'
Bu yüzden test etmek istediğimde bu kodu böyle olacak fonksiyonu
import sys
from foomodule import foo
def test_foo():
foo()
output = sys.stdout.getline().strip() # because stdout is an StringIO instance
assert output == 'hello world!'
Ama eğer nosetests kaçarsam-s testi çöküyor parametre ile. Nasıl unittest veya burun modülü ile çıkış yakalayabilir miyim?
CEVAP
18 Kasım 2010, PERŞEMBE
Eğer gerçekten bunu yapmak istiyorsanız, sys yeniden atayabilirsiniz.test süresi için stdout.
def test_foo():
import sys
from foomodule import foo
from StringIO import StringIO
saved_stdout = sys.stdout
try:
out = StringIO()
sys.stdout = out
foo()
output = out.getvalue().strip()
assert output == 'hello world!'
finally:
sys.stdout = saved_stdout
Eğer bu kod yazıyor olsam, ancak foo
işlevi out
isteğe bağlı bir parametre geçmek istiyorum.
def foo(out=sys.stdout):
out.write("hello, world!")
O zaman test çok basittir:
def test_foo():
from foomodule import foo
from StringIO import StringIO
out = StringIO()
foo(out=out)
output = out.getvalue().strip()
assert output == 'hello world!'
Bunu Paylaş:
Nasıl/çıkış/python virtualenv devre dı...
Nasıl Python 2.7 alt işlemi çıkış gizl...
Nasıl Python betiği çıkış penceresi aç...
Nasıl Python kullanırken çıkış kodu al...
Nasıl Python ile şimdiki zaman almak i...