SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lena Danya

    Lena Danya

    11 NİSAN 2010
  • SunsetTrance

    SunsetTrance

    20 EYLÜL 2008
  • Ty Moss

    Ty Moss

    20 Kasım 2007