Модульное тестирование Django - Почему я не могу просто запустить ./tests.py в myApp? - PullRequest
0 голосов
/ 12 ноября 2009

Так что я очень знаком с manage.py test myapp. Но я не могу понять, как заставить мой tests.py работать как отдельный исполняемый файл. Вы можете спросить, почему я хотел бы сделать это .. Ну, я работаю ( сейчас ) в Eclipse, и я не могу понять, как настроить инструмент для простого запуска этой команды. Несмотря на это, было бы очень приятно просто обернуть tests.py простым способом, чтобы просто запустить его.

Вот как выглядит мой tests.py.

"""
This simply tests myapp
"""
import sys
import logging
from django.test import TestCase

from django.conf import settings
from django.test.utils import get_runner

class ModelTest(TestCase):

    def test_model_test1(self):
        """
        This is test 1
        """
        self.failUnlessEqual(1 + 1, 2)

    def test_model_test2(self):
        """
        This is test 2
        """
        self.failUnlessEqual(1 + 1, 2)

    def test_model_test3(self):
        """
        This is test 3
        """
        self.failUnlessEqual(1 + 1, 2)

def run_tests():
    test_runner = get_runner(settings)
    failures = test_runner([], verbosity=9, interactive=False)
    sys.exit(failures)

if __name__ == '__main__':
    # Setup Logging
    loglevel = logging.DEBUG
    logging.basicConfig(format="%(levelname)-8s %(asctime)s %(name)s %(message)s",
                        datefmt='%m/%d/%y %H:%M:%S', stream=sys.stdout)
    log = logging.getLogger("")
    run_tests()

Я думаю, что решение находится в этой строке, но я не могу понять, каким должен быть первый аргумент, чтобы он волшебным образом начал работать ..

failures = test_runner([], verbosity=9, interactive=False)

Спасибо за помощь !!

**** Обновления ****

Что я хочу сделать (Doh!), Так это просто запустить тесты "myApp". Проблема в том, что это работает (и chmod не проблема), но оно хочет запустить весь набор тестов. Я не хочу этого Я просто хочу запустить тестовый набор myApp.

Еще раз спасибо!

Ответы [ 2 ]

1 голос
/ 12 ноября 2009

Вы можете создать конфигурацию "External Tool" для вашего проекта, например:

Location: ${project_loc}/src/${project_name}/manage.py
Working Directory: ${project_loc}/src/${project_name}/
Arguments: test ${string_prompt}

Это запустит manage.py test <любое имя, которое вы введете в строке приглашения>.

Приведенные выше значения предполагают, что вы создали проект pydev в Eclipse, а затем разместили проект Django в каталоге pydev src. Предполагается также, что имя проекта pydev совпадает с именем вашего проекта Django. Он будет использовать текущий выбранный проект в проводнике пакетов для определения project_loc и project_name.

0 голосов
/ 12 ноября 2009

а. это должна быть первая строка в вашем кодовом файле (tests.py)

#!/usr/bin/env python

б. пробег $ chmod +x tests.py

...