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

  • David MeShow

    David MeShow

    10 EKİM 2006
  • Music EuroDance 2

    Music EuroDa

    12 Mayıs 2011
  • TV nEW

    TV nEW

    25 AĞUSTOS 2012