2010-01-28 2 views
2

Я узнал, что с помощью Customizable Authencation backends philosophy можно создать веб-сайт, который принимает адреса электронной почты в качестве имен пользователей. Но после создания соответствующей логики и тестирования, что мой код работает нормально, я нашел одну проблему с собственными тестовыми окнами Django. Они не соблюдали философию «Настраиваемая аутентификация». Значение - тестовые ящики were actually having hardcoded values('username': 'testclient') для тестирования процесса входа в систему. Почему это? Django всегда препятствует Tight Coupling. Но что здесь происходит?Настраиваемые серверы Authencation не сопровождаются собственными регистрационными шкафами Django. Зачем?

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

Обновление: Поскольку @dmishe указал, что эти тестовые окна должны проверять собственную функциональность Django. Я понял это. Но как я могу позволить этим ошибкам «failing testcase» НЕ появляться, когда я запускаю свои тестовые тесты или запускаю весь тестовый набор проектов?

+0

Я думаю, что этот вопрос будет более подходящим для списка рассылки django. Любые ответы здесь будут предположениями, если вы не получите ответ от кого-то, кто был вовлечен в проект (что вполне возможно, конечно) –

ответ

1

Как отмечает dmishe, это не проблема, что тесты contrib.auth проверяют функциональность, встроенную в приложение contrib.auth. Проблема в том, что эти тесты запускаются для пользовательских проектов по умолчанию, и их легко разбить с помощью обычной настройки настроек. Это проблема, которую разработчики Django знают и работают над возможными решениями.

Тем временем мое решение состоит в том, чтобы определить простой скрипт bash для тестирования только тех приложений, которые я хочу. Поэтому вместо теста «./manage.py» я запускаю скрипт, который выполняет «./manage.py test app1 app2 app3 ...». Не идеальна, но это далеко не так, как мне показалось хуже :-)

Обновление: This commit может вас заинтересовать.

+0

Я ожидал, что вы разрешите это с помощью комплектов unittest. Но все-таки ему нужен app1, app2, app3, упомянутый сценарий. Так что пока я поеду с этим. Но ожидая лучшего решения .... –

+0

@Carl Спасибо за предложение. Я попробовал такой же подход, переопределив settings.INSTALLED_APPS, и я удалил django.contrib.auth из settings.INSTALLED_APPS (для обхода тестов «auth»). Это привело к не созданию таблицы «auth_user», которая необходима для всех моих других тестов. Так не повезло :( –

0

Я не вижу проблемы здесь, django.contrib.auth.tests должен проверять приложение auth и ничего больше. Таким образом, он должен тестировать встроенный бэкэнд, который является комбинацией имени пользователя и пароля.

+0

@dmishe! Ты прав. Чем больше я думаю об этом, тем больше я склоняюсь к тому, чтобы найти это, это действительно так. Но я не мог ожидать, что тестовые окна Django потерпят неудачу, когда я запускаю свои тестовые файлы. Итак, есть ли возможное решение/обходное решение, чтобы обойти эту проблему? –

Смежные вопросы