sklass의 s-class 프로그래밍 blog

[Django] test 명령어 argument customize 본문

django

[Django] test 명령어 argument customize

sklass 2021. 9. 11. 00:07

django에서 test명령어를 실행할때, argument, 즉 option을 추가해서 명령어를 실행하고 싶을때가 있습니다. 이런경우, DiscoverRunner라는 Django Test의 최상위 클래스의 add_arguments()라는 classmethod를 override하면 됩니다. 아래에 예시를 참고하세요.

 

tests/runner.py 에 아래 코드를 추가해줍니다.

from django.conf import settings
from django.test.runner import DiscoverRunner


class TestRunner(DiscoverRunner):
    def __init__(self, mol_id, conformer_id, **kwargs):
        super().__init__(**kwargs)
        print("Setting hitstest options...")

        self.mol_id = mol_id
        self.conformer_id = conformer_id

    @classmethod
    def add_arguments(cls, parser):
        DiscoverRunner.add_arguments(parser)

        parser.add_argument(
            "--mol_id",
            default=None,
            help="submit your mol_id for result_search, result_detail or result_download testing.",
            type=str,
        )
        parser.add_argument(
            "--conformer_id",
            default=None,
            help="submit your conformer_id for result_download or result_ngl testing.",
            type=str,
        )

    def setup_test_environment(self, **kwargs):
        super(TestRunner, self).setup_test_environment(**kwargs)
        settings.TEST_SETTINGS = {
            "mol_id": self.mol_id,
            "conformer_id": self.conformer_id,
        }

 

이제 위에서 추가한 arguments를 명령어에 추가해야되는데 그냥 argument만 추가하면 안되고, --testrunner를 DiscoverRunner를 override한 클래스명으로 명시해주고 추가해주어야합니다. 이번 예에서는 TestRunner로 DiscoverRunner를 override해줬음으로, 아래와 같은 명령어를 실행하면됩니다.

 

$ python3 manage.py test --testrunner=tests.runner.TestRunner --mol_id="mol1"

 

'django' 카테고리의 다른 글

[django] drf의 request.data.get()  (0) 2021.10.22
[Django] unittest @tag  (0) 2021.09.11
[Django] Signals  (0) 2021.09.10
[Django] manage.py 명령어 Customize  (0) 2021.09.10
[Django] select_for_update()를 활용한 동시성 제어  (0) 2021.08.24