2017-03-28 9 views
0

例外テストの処理には全く新しいです。アサーションが発生しているかどうかをチェックする方法は不思議です。pytestでexpectionが発生していないかどうかを確認します

a.py

class SomeError(Exception): 
    pass 

class SomeClass(object): 
    def __init__(self): 
     ... 
     raise SomeError 
     ... 

test_a.py

from a.a import SomeClass 

def test_some_exception_raised(): 
    ? 

それはSomeErrorが発生したかどうかを確認するためにそこにどのような主張をすべきですか?私はpytestを使用しています。発生した例外に関するアサーションを書き込むためには

答えて

0

、あなたがこのようなコンテキストマネージャとしてpytest.raisesを使用することができます。

a.py

class SomeError(Exception): 
    pass 

class SomeClass(object): 
    def __init__(self): 
     ... 
     raise SomeError("some errror message") 
     ... 

test_a.py

from .a import SomeClass, SomeError 
import pytest 

def test_some_exception_raised(): 
    with pytest.raises(SomeError) as excinfo: 
     obj = SomeClass() 
    assert 'some errror message' in str(excinfo.value) 

例外アサーションの詳細については、click here

+0

ありがとうございます!ですから、例外を発生させるときに、いくつかのパラメータ、 'raise SomeError( 'some error message')'を追加する必要がありますか? – Mihai

+0

@ミハイは今理解するために答えを参照してください。 –

+0

PyCharmが私にこのように気づいた理由を知っていますか?予想されるタイプ 'TypeVar(' T ')'、代わりに 'タイプ[SomeError]'がありますか? – Mihai

関連する問題