2013-07-23 26 views
21

Birim testleri hata ayıklama yaparken (pycharm test yürütücüsünden), etkileşimli komut satırını açabilirsiniz, ancak (normal komut dosyalarının hata ayıklamalarının tersine) girilen komutlar üretilmez. herhangi bir çıktı.Pycharm birim testi etkileşimli hata ayıklama komut satırı çalışmıyor

>>> print "a" 
>>> import sys 
>>> sys.stderr.write("moof") 
moof 
>>> sys.stdout.write("moof") 
>>> sys.stderr.write("test") 
test 

bu beklenen davranış mı: Stderr beklendiği gibi çalıştığı için Nitekim olarak, stdout'u yerde yakalanan olduğu anlaşıldı? Etkileşimli hata ayıklama konsolunu gerçekten çok beğendim ve birim testlerini de hata ayıkladığında güzel davrandığında harika olurdu.

cevap

40

Bunun nedeni, test yürütücünüzün stdout'u yakaladığı, ancak stderr'i yakalamamasıdır.

captures both stdout and stderr numaralı py.test kullanıyorum, böylece hiç çıktı göremiyorum. Çıkışı görmek istersem, run/debug konfigürasyonunu değiştirerek ve bu bayrağı seçenekler alanına ekleyerek -s bayrağımı py.test koşucuya iletmeliyim. (> py.test> seçenekleri alanına -s eklemek Çalıştır> Düzenle Yapılandırmaları> Varsayılanlar> Python testleri.)

>>> print 'a' 
a 
>>> import sys 
>>> sys.stderr.write('moof') 
moof 
>>> sys.stdout.write('moof') 
moof 
>>> sys.stderr.write('test') 
test 

Not: -s bayrak eşit yapabilirsiniz unittest için nose tests

+5

Parmağım sertleşmeye başlayana kadar upvote butonuna tıkladım – mbatchkarov

+0

(Çalıştır> Yapılandırmaları Düzenle> Varsayılanlar> Python testleri> py.test> seçenekler alanına ekler.) –

+3

(Çalıştır> Yapılandırmaları Düzenle> Varsayılanlar> Python testleri> py.test> seçenekler alanına ------ ekleri ekle -> (Ek Bağımsız Değişkenler).) ayarlar varsayılan çalıştırma testleri pytest'e göre: (Tercihler> Araçlar> Python Entegre Araçları> varsayılan test koşucusu) –

1

ile kullanılabilir Pycharm Run/Debug konfigürasyonuna '--capture = no' eklensin - bu, tüm çıkışı gerçek zamanlı olarak gösterecektir

İlgili konular