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

  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • ExcelIsFun

    ExcelIsFun

    16 ŞUBAT 2008
  • PC Learning Zone - Computer Training

    PC Learning

    8 EYLÜL 2006