Djangoでカスタムテストランナーを作成してカスタム引数 '--headless'を追加しましたが、副作用としてデフォルトの引数を使用できません。私はDjango 1.9.11を使用しています。私のテストランナーコードは次のとおりです。Djangoカスタムテストランナーは、デフォルトのテスト引数の一部を削除します
はfrom django.test.runner import DiscoverRunner
class IbesTestRunner(DiscoverRunner):
@classmethod
def add_arguments(cls, parser):
parser.add_argument(
'--headless',
action='store_true', default=False, dest='headless',
help='This is custom optional arguments for IBES.'
'Use this option to do browser testing without GUI')
このテストランナーを使用して./manage.py test -h
の結果は次のとおりです。
usage: manage.py test [-h] [--version] [-v {0,1,2,3}] [--settings SETTINGS]
[--pythonpath PYTHONPATH] [--traceback] [--no-color]
[--noinput] [--failfast] [--testrunner TESTRUNNER]
[--liveserver LIVESERVER] [--headless]
[test_label [test_label ...]]
. . .
デフォルトのテストランナーを使用している間、./manage.py test -h
の結果は次のとおりです。
usage: manage.py test [-h] [--version] [-v {0,1,2,3}] [--settings SETTINGS]
[--pythonpath PYTHONPATH] [--traceback] [--no-color]
[--noinput] [--failfast] [--testrunner TESTRUNNER]
[--liveserver LIVESERVER] [-t TOP_LEVEL] [-p PATTERN]
[-k] [-r] [-d] [--parallel [N]]
[test_label [test_label ...]]
...
-k、-p、-rなどの引数を使用できないことに注意してください。 カスタムテスト引数を追加できますが、デフォルトのテスト引数を失うことはできません。
おかげで、それは働きました。私はPythonでクラスについてもっと学ぶ必要があると思う。これは一般的なPythonクラスの特徴ですか、またはdjango特有ですか?なぜいくつかの議論だけが欠落していますか? – pupil
これはPythonの機能です。メソッドを定義し、それを 'classmethod'デコレータでデコレートする場合、正しいメソッド定義には最初の引数(慣習的に' cls')が含まれていなければなりません。明示的に呼び出す必要があるとき、pythonはクラスを 'cls'残りの引数は(メソッド定義で必要な場合のみ)送信する必要があります。詳細は、ドキュメントを参照してください。https://docs.python.org/2/library/functions.html?highlight=classmethod#classmethod – slackmart