13

PythonsetUpClassの使用にほとんど問題はありません。

たとえば、次の場合を考えてみましょう

class MyTest(unittest.case.TestCase):

    @classmethod
    def setUpClass(cls):
        print "Test setup"
        try:
            1/0
        except:
            raise

    @classmethod
    def tearDownClass(cls):
        print "Test teardown"

いくつかの質問

  1. 上記のコードは、テストsetUpClass例外を処理する正しい方法ですか(python unittestが処理できるように発生させることにより)、fail()、skip()メソッドがありますが、これらはテストインスタンスでのみ使用でき、テストクラス。

  2. setUpClass例外がある場合、tearDownClassが実行されるようにするにはどうすればよいですか(手動で呼び出す場合は、unittestでは実行されません)。

4

4 に答える 4

5

tearDownClassJeff が指摘しているように、例外を呼び出すことができますが、次の__del__(cls)メソッドを実装することもできます。

import unittest

class MyTest(unittest.case.TestCase):

    @classmethod
    def setUpClass(cls):
        print "Test setup"
        try:
            1/0
        except:
            raise

    @classmethod
    def __del__(cls):
        print "Test teardown"

    def test_hello(cls):
        print "Hello"

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

次の出力があります。

Test setup
E
======================================================================
ERROR: setUpClass (__main__.MyTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "my_test.py", line 8, in setUpClass
    1/0
ZeroDivisionError: integer division or modulo by zero

----------------------------------------------------------------------
Ran 0 tests in 0.000s

FAILED (errors=1)
Test teardown

注 :メソッドはプログラムの実行の最後に呼び出されることに注意してください。__del__これは、複数のテスト クラスがある場合は望ましくない可能性があります。

それが役に立てば幸い

于 2012-08-25T13:09:15.960 に答える