We use Python and Django for our websites. We set a test command that adds to the default Django test command:
from django.core.management.commands import test
class Command(test.Command):
def add_arguments(self, parser):
super().add_arguments(parser=parser)
group = parser.add_argument_group('language options', 'These arguments are mutually exclusive. Default: --test-default-languages')
language_group = group.add_mutually_exclusive_group()
language_group.add_argument(
"--test-all-languages",
action="store_true",
help="Run tests for all languages, and don't skip languages.",
)
language_group.add_argument(
"--test-default-languages",
action="store_true",
help="Run tests for default languages (English, French, Hebrew + randomly select one more language or none).",
)
language_group.add_argument(
"--test-only-english",
action="store_true",
help="Run tests for only English.",
)
# ...
Now, in the models we have this code:
class SiteDiscoverRunner(DiscoverRunner):
def __init__(self, *args, **kwargs):
# ...
super().__init__(*args, **kwargs)
self.test_all_languages = kwargs.get('test_all_languages', False)
self.test_default_languages = kwargs.get('test_default_languages', False)
self.test_only_english = kwargs.get('test_only_english', False)
if ((self.test_all_languages is False) and (self.test_only_english is False)):
self.test_default_languages = True
Tests must be run with one of the above command line arguments or none. If none then the test_default_languages
value should be true.
I would like to know if the parser can make self.test_default_languages
True if none of the 3 arguments is given, so I can remove the command self.test_default_languages = True
in the model? I searched and didn’t find out how to do it.