2017-08-14 3 views
3

に警告がありません。が1つのアサーションで生成されていることを確認します。pytestを使用してNOをアサートする方法警告が発生しました

pytest documentation about warningsに明示的な回答が見つかりませんでした。

は、私は多分Noneが「何」を意味しないだろうと考え、これを試してみた:

def test_AttrStr_parse_warnings(): 
    """Check _AttrStr.parse() raises proper warnings in proper cases.""" 
    with pytest.warns(None): 
     _AttrStr('').parse() 

をしかし、この主張は、警告が実際に上げても、また、例えば、テストが失敗しない、常に正確です:

def test_AttrStr_parse_warnings(): 
    """Check _AttrStr.parse() raises proper warnings in proper cases.""" 
    with pytest.warns(None): 
     _AttrStr('').parse() 
     warnings.warn('any message') 

答えて

3

それはすべての可能な警告が発生「記録」することは可能だし、調達警告の数を確保するために、別のアサーションを追加するためにこれを使用するには、0です:

def test_AttrStr_parse_warnings(): 
    """Check parse() raises proper warnings in proper cases.""" 
    with pytest.warns(None) as record: 
     _AttrStr('').parse() 
    assert len(record) == 0 

2番目のアサーションにwarnings.warn('any message')を追加すると、テストが失敗します。

+0

、さらにはもっと綺麗です: 'assert not record.list'。 – krassowski

関連する問題