44

私は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ますか?

4

2 に答える 2

61

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

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

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

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

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

于 2013-02-08T08:05:58.733 に答える
47

単純なアサートを使用すると機能するはずです

assert False, "I mean for this to fail"
于 2013-02-08T08:16:04.087 に答える