web-dev-qa-db-ja.com

python setUpClassのunittestを失敗させる方法は?

pythonを使用していくつかの単体テストを行っており、setUpClassでいくつかのテスト前チェックを行っています。どのようにunitest-failsetUpClass、次の簡単な例として:

_class MyTests(unittest.TestCase):

    @classmethod
    def setUpClass(cls):    
        unittest.TestCase.fail("Test")

    def test1(self):
        pass

if __name__ == '__main__':
    unittest.main()
_

エラーTypeError: unbound method fail() must be called with TestCase instance as first argument (got str instance instead)を返します。

失敗したために発生するエラーはインスタンスメソッドであり、MyClassのインスタンスはまだありません。インスタンスをオンザフライで使用する

_unittest.TestCase().fail("Test")
_

_unittest.TestCase_自体にもテストがないため、これも機能しません。 MyClassの条件が満たされない場合に、setUpClassのすべてのテストを失敗させる方法はありますか?

追加質問:setUpClassのテストを確認する方法はありますか?

32
Alex

self.fail("test")をsetUpインスタンスメソッドに入れると、すべてのテストに失敗します

クラスレベルでこれを行う最も簡単な方法は、クラス変数を次のようにすることです。

@classmethod
def setUpClass(cls):
   cls.flag = False

def setUp(self):
   if self.flag:
       self.fail("conditions not met")

これがあなたが望むものであることを願っています。

41
Raufio

単純なアサートを使用するとうまくいくはずです

assert False, "I mean for this to fail"
31
Greg