Почему Джанго не видит мои тесты? - PullRequest
8 голосов
/ 07 сентября 2010

Я создал модуль test.py, заполненный

from django.test import TestCase
from django.test.client import Client
from django.contrib.auth.models import User
from django.contrib.sites.models import Site

from forum.models import *

class SimpleTest(TestCase):


    def setUp(self):
        u = User.objects.create_user("ak", "ak@abc.org", "pwd")
        Forum.objects.create(title="forum")
        Site.objects.create(domain="test.org", name="test.org")

    def content_test(self, url, values):
        """Get content of url and test that each of items in `values` list is present."""
        r = self.c.get(url)
        self.assertEquals(r.status_code, 200)
        for v in values:
            self.assertTrue(v in r.content)

    def test(self):
        self.c = Client()
        self.c.login(username="ak", password="pwd")

        self.content_test("/forum/", ['<a href="/forum/forum/1/">forum</a>'])
        ....

и поместил его в папку с моим приложением. Когда я запускаю тесты по

python manage.py test forum

после создания тестовой базы данных я получаю ответ «Выполнено 0 тестов за 0,000 с»

Что я делаю не так?

P.S. Вот моя иерархия проектов:

MyProj:
    forum (it's my app):
        manage.py
        models.py
        views.py
        tests.py
        ...

Я переименовал test.py в tests.py. Eclipse получил, что этот модуль с тестами, но ответ по-прежнему «Выполнено 0 тестов за 0,000 с»

Ответы [ 6 ]

35 голосов
/ 07 октября 2011

Вам необходимо использовать префикс test_ для каждого метода тестирования.

11 голосов
/ 23 октября 2014

Резюме:

0) Попробуйте запустить только для вашего приложения:

python manage.py test YOUR_APP

1) Проверьте файл settings.py , если YOUR_APP находится в конфигурации INSTALLED_APP

2) Метод теста должен начинаться со слова «тест», например ::

def test_something(self):
    self.assertEquals(1, 2)

3) Если вы используете каталог с именем tests вместо файла tests.py , проверьте, есть ли в нем файл init .py. .

4) Если вы используете каталог tests , удалите файлы tests.pyc и tests.pyo . ( pycache dir для Python3)

6 голосов
/ 08 сентября 2010

Попробуйте переименовать ваш метод test во что-то вроде test_content.

Я полагаю, что тестовый исполнитель запустит все методы с именем test_* (см. Документацию по Python для , для организации кода теста . TestCase в Django является подклассом unittest.TestCase, поэтому должны применяться те же правила .

5 голосов
/ 07 сентября 2010

Вы должны назвать это tests.py.

3 голосов
/ 07 сентября 2010

Есть что-то не совсем правильное, если вы получаете тот же результат после переименования файла в tests.py.Как вы проводите тесты?Вы делаете это из командной строки или вы настроили пользовательскую цель запуска с помощью Eclipse?Попробуйте его из командной строки, если вы этого еще не сделали.

Также запустите оболочку Django (python manage.py shell) и импортируйте свой тестовый модуль.

from MyProj.forum.tests import SimpleTest

Правильно ли работает импорт?

1 голос
/ 29 ноября 2016

Я пробовал все эти вещи, но я не смог добавить файл __init__.py в каталог тестов, который я создал для хранения всех своих тестов, и Django не смог его найти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...