2017-01-09 2 views

答えて

2

あなたはこのためにpytestを使用することができます。

import pytest 
... 
with pytest.raises(AssertionError): 
    fun('a') 

fun('a')はAssertionErrorがを上げていない場合、これはエラーが発生します。

それとも、あなたがunittestを使用している、とあなたがTestCase内にある場合、あなたはassert Raisesを使用することができます。

self.assertRaises(AssertionError, fun, 'a') 

他の回答を述べてきたようにまた、あなたが主張するよりraiseがエラーをINGのほうが良いでしょうFalse。あなたはエラーが発生した場合行うと、あなたは何が悪かったのかについての詳細をユーザーに伝えるものを上げる、または独自のカスタム例外を発生させることができます:

import pytest 

class AError(Exception): 
    pass 

def fun(param): 
    if param == 'a': 
     raise AError("You passed 'a'; don't do that!") 
    else: 
     return None 

with pytest.raises(AError): 
    fun('a') 
+0

をこれは私の質問は完全に罰金答えました。私は忙しかったのですぐに返信することができませんでした。どうもありがとう! – Ohumeronen

1

はアサーションを投げる可能性がより良いアプローチです。例として:

def fun(param): 
    if param == 'a': 
     raise AssertionError('Param is equal to \'a\'.') 
    else: 
     return None 

try: 
    fun('b') 
    print('Equalling \'b\' worked fine.') 
    fun('a') 
    print('This line is not printed...') 
except AssertionError as err: 
    print('An assertion error has been raised:') 
    print(err) 

が与える:

Equalling 'b' worked fine. 
An assertion error has been raised: 
Param is equal to 'a'. 
+0

これを私に指摘してくれてありがとう! – Ohumeronen

関連する問題