2016-10-06 5 views
1

私はrequestsを使用し、アクティブな接続が必要なテストをしています。pytest:xfailが指定された例外になると、それ以外の場合は

接続がダウンしている場合はxfailにしますが、それ以外の場合は正常に渡します。ここで

は、私が試したものです:

from requests import ConnectionError 

@pytest.mark.xfail(raises=ConnectionError) 
class TestStuff(): 
    def test_stuff(): 
     do stuff 

これます確かにxfail接続がダウンしているが、一般的なケースでは、それxpass ES場合。

私が欲しいものを達成する方法はありますか?私はXFAILを取得していない

from requests import ConnectionError 

class TestStuff(): 

    def test_stuff(): 
     try: 
      do stuff 
     except ConnectionError: 
      pass 

しかし:

は、私が試し/除いて使用することができます。テストは必ずパスしますが、正しく実行できないことは通知されません。

xfailは接続エラーなどの一時的なエラーではなく、いつか固定されている可能性のある体系的なエラー(壊れたlibなど)を意味すると思います。

答えて

2

ConnectionErrorを溶液でキャッチされたときxfailを呼び出します。

フィクスチャで接続をチェックすること(同じ方法 - pytest.xfailで試してみてください)と、接続が必要なすべてのテストでそのフィクスチャを使用する方が良いです。

このようにすれば、すべての依存テストが実行されなくてもxfailになります。

+0

良い点。フィクスチャテスト中に接続が上がっているかもしれませんが、テスト中に中断してしまいます(ok、そう思わない...)。または、接続がアップしている可能性がありますが、サービス(どのテストが実行されたかによって異なります)に到達できません。 –

関連する問題