Dokümantasyon için arama yaptım, ancak bulamadım. Fazla açıklamayan bir çift vardı.Burun assert_raises nasıl kullanılır?
birisi bana Burun
assert_raises(what should I put here?)
fonksiyonunu açıklayabilir ve nasıl kullanılır?
Dokümantasyon için arama yaptım, ancak bulamadım. Fazla açıklamayan bir çift vardı.Burun assert_raises nasıl kullanılır?
birisi bana Burun
assert_raises(what should I put here?)
fonksiyonunu açıklayabilir ve nasıl kullanılır?
assert_raises()
fonksiyon testleri, belirli parametrelere sahip sunulduğunda emin bir işlev çağrısı bir istisna yükseltir yapmak. İki sayıları toplayan bir işlevi add
olsaydı, diyelim ki, bir tamsayı ve bir dize geçmek zaman
Örneğin, muhtemelen TypeError
yükseltmek gerekir. Yani: İlk bağımsız değişken, beklediğiniz özel durum türüdür. İkincisi, çağrı işlevidir. Argümanların geri kalanı işleve iletilecektir (bu durumda, işlev içinde x
ve y
olacaktır). Beklenen durum fonksiyonu tarafından yükseltilir ise
, onaylama işlemi geçer. Kabul cevap doğru olmakla birlikte
, ben assert_raises
yönteme daha iyi bir kullanım olduğunu düşünüyorum.
sadece bir özel durum oluşur iddia etmek istiyorsanız
, bu@raises
sözdizimi kullanmak muhtemelen daha basit ve daha temiz. Ancak
@raises(HTTPError)
def test_exception_is_raised:
call_your_method(p1, p2)
, örneğin, yükseltilmiş hariç biraz daha yapmak istiyorum varsayalım: yerine 500, izinsiz: Sunucu Hatası biz bu httpError tip 401 olduğu kaldırdı iddia gerekir. sözdizimi yukarıdaki Böyle bir durumda
bizassert_raises
kullanmak ancak farklı bir şekilde gerektiği yararlı değildir. assert_raises
ikinci parametresi olarak callable
geçmezse, istisna ayrıntılarını daha fazla test etmek için kullanabileceğimiz bir bağlam geri dönecektir. def test_exception_is_raised:
with assert_raises(HTTPError) as cm:
call_your_method(p1, p2)
ex = cm.exception # raised exception is available through exception property of context
ok_(ex.code == 401, 'HTTPError should be Unauthorized!')
Bana yeni bir şey öğretti. – user1544624
İstisna mesajını görmek istiyorum. Cm.exception adresinden aldığım ex boş bir ex.message var. Bununla birlikte istisna bir mesajla yükseltilir. Neyin yanlış gidiyor? – akshitBhatia
Bunu nasıl yapacağım hakkında bilgi bulmayı başaran tek yer ... –
Tamam teşekkürler! Ama assert_raises böyle assert_equal gibi diğer Burun fonksiyonları ödeme nereye sen de iyi bir burun belgeleri için bir link biliyor musunuz! Bunu da bulmakta vardı – user1544624
@kindall. Gerçi 'help (assert_rases)' ı deneyebilirsiniz. – kindall
Biraz gizli, ama http://nose.readthedocs.org/en/latest/testing_tools.html#module-nose.tools birinci paragraf şöyle belirtmektedir: "... ve aynı assertX yöntemlerinin tümü, unittest.TestCase içinde bulundu. sadece PEP 8 modada yazıldığından, assertEqual yerine assert_equal). " İşte bu liste: http://docs.python.org/2/library/unittest.html#assert-methods –