1

TestCase を使用して自分の django アプリのテストを書いていますが、次のように親クラスの setUp メソッドに引数を渡せるようにしたいと考えています。

from django.test import TestCase

class ParentTestCase(TestCase):
    def setUp(self, my_param):
        super(ParentTestCase, self).setUp()
        self.my_param = my_param

    def test_something(self):
        print('hello world!')

class ChildTestCase(ParentTestCase):
    def setUp(self):
        super(ChildTestCase, self).setUp(my_param='foobar')

    def test_something(self):
        super(ChildTestCase, self).test_something()

ただし、次のエラーが表示されます。

TypeError: setUp() takes exactly 2 arguments (1 given)

これは、まだ self のみが渡されているためであり、__init__これを機能させるにはクラスに上書きする必要があることを知っています。私はPythonの初心者で、これを実装する方法がわかりません。どんな助けでも大歓迎です!

4

1 に答える 1

1

テスト ランナーは、パラメーターとして self のみを指定して ParentTestCase.setup を呼び出します。したがって、この場合のデフォルト値を追加します。例:

class ParentTestCase(TestCase):
    def setUp(self, my_param=None):
        if my_param is None:
            # Do something different
        else:
            self.my_param = my_param

注: 変更可能な値をデフォルトとして使用しないように注意してください (詳細については、「最小の驚き」と変更可能なデフォルト引数を参照してください)。

于 2014-09-30T05:38:10.003 に答える